【发布时间】:2019-12-14 07:57:42
【问题描述】:
我刚刚开始使用 Matlab 的工具箱进行简单的神经网络训练。 我的 Matlab 版本是 2019a。 然而,有一件事让我感到困惑。考虑这段代码:
Nsamples=1000;
NoiseMag=0.2;
rx=linspace(-1,1,Nsamples);
ry = rx + NoiseMag*randn(size(rx));
net=feedforwardnet(50);
[net,tr]=train(net,rx,ry);
这段代码在噪声样本(rx,ry) 上训练具有单个隐藏层的前馈神经网络。我感到困惑的是tr.perf输出的网络训练错误与mse(net,rx(tr.trainInd),ry(tr.trainInd))不一致:
tr.perf %output: [9.7205 0.0419 0.0370 0.0364 0.0361 0.0358 0.0356 0.0355 0.0355 0.0354]
mse(net,rx(tr.trainInd),ry(tr.trainInd)) . %Output 0.0401
解释:tr.perf 输出每次迭代(或 epoch)的训练误差。下一条命令mse(net,rx(tr.trainInd),ry(tr.trainInd)) 输出当前(最优)神经网络参数的训练误差。
由于tr.best_epoch 是3,tr.perf 的第三个元素应该完全等于mse(net,rx(tr.trainInd),ry(tr.trainInd)),但事实并非如此。
知道为什么吗? 在比较验证和测试错误时,我也观察到了同样的不一致。 如果您编译这些示例,由于样本的随机性和 NN 的初始权重,您的输出将略有不同。
谢谢
【问题讨论】:
标签: matlab neural-network