【发布时间】:2026-02-07 18:15:01
【问题描述】:
我正在训练一个神经网络来学习一个函数。到目前为止一切都很好。
我有 4x10000 的输入矩阵和 3x10000 的输出矩阵。我有比 10000 个多得多的数据点。但并非所有数据点都可以一次拟合,所以我决定提供 10000-10000 个数据点的数据包并在其上训练相同的神经网络。
隐藏层共有三层,7个单元。
所以我要做的是,我用 10000 个数据点随机训练网络,然后再次在另一个随机 10000 个数据点上训练,依此类推。
为此,我存储CheckPoints(神经网络工具包的内置功能)。但是发生的情况是,正在训练的network 在CheckPoints 中存储为struct,而不是network 类型本身。所以当我下次运行程序时加载检查点时,它会显示如下错误。
Undefined function 'train' for input arguments of type 'struct'
我正在使用fitnet 网络。
% Create a Fitting Network
hiddenLayerSize = 7;
net = fitnet(hiddenLayerSize,'trainlm');
% Setup Division of Data for Training, Validation, Testing
net.divideParam.trainRatio = 60/100;
net.divideParam.valRatio = 20/100;
net.divideParam.testRatio = 20/100;
load('Highlights_Checkpoint.mat');
existanceOfCheckpoint = exist('checkpoint', 'var');
if existanceOfCheckpoint==0
else
net = (checkpoint.net);
end
% Train the Network
[net,tr] = train(net,x,t,'useParallel', 'yes','showResources','yes', 'CheckpointFile','Highlights_Checkpoint.mat');
【问题讨论】:
-
看起来您没有将正确的对象保存到
checkpoint.net。设置该字段的代码在哪里? -
@Naveh 存储检查点的工作在
train函数内部完成。我没有明确存储检查点。 -
您似乎是从文件中加载
checkpoint,因为它没有在您发布的代码中初始化。如果您使用从fitnet返回的net而不是net = (checkpoint.net),一切正常吗? -
当然。我在
train函数CheckpointFile和Highlights_Checkpoint.mat中传递了两个参数。所以该函数会以一定的时间间隔将network存储在mat文件中。我在第一次运行程序时保留了load('Highlights_Checkpoint.mat')行的注释(因为第一次不会有任何检查点文件)。我在之后的处决中取消评论它。 -
所以它第一次运行,第二次调用抛出错误?因为这证明了我的观点。
标签: matlab machine-learning neural-network