为什么当我为相同的选项和相同的数据库训练一个网络模型时,我得到了不同的训练模型,在结果上,我有不同的结果分类。
1)我有一个循环来训练n次神经网络模型。
2)我设置了相同的培训选项
3)我有相同的数据库来训练和测试
4)我使用相同的预训练模型(例如google net)。
最后,每次(n=1,2,3)我都有不同的分类结果。差额甚至等于10个百分点。
数据库-人脸图像(总是读取相同的数据库,而不是随机读取)模型--我使用了Matlab预先训练的模型,以及只对github的人脸图像进行预训练的模型。
opts = trainingOptions('sgdm', ...
'MaxEpochs',1, ... %5 50
'MiniBatchSize',100,... %64 10
'InitialLearnRate',5e-5,...
'ExecutionEnvironment','gpu',...
'Shuffle','every-epoch', ...
'Plots','training-progress');
如果某些选项未被标识,则意味着默认。
发布于 2019-10-23 08:55:26
您的脚本不是完全由您提到的参数定义的。此外,还涉及随机种子。当您使用预先训练的模型时,您应该重新初始化最后几个层。使用完整的预训练参数往往会导致收敛到坏的局部极小值。
也许你已经这么做了,那么随机性就从那里来了。另外,我想你应该是分批训练的。如果不指定随机种子,则每次运行的批处理是不同的,因为每个批包含的实例都是根据随机种子选择的。
将训练实例以不同的顺序呈现给神经网络会产生不同的结果。
https://stackoverflow.com/questions/58518752
复制相似问题