在Matlab中训练神经网络后不一致/不同的测试性能/误差

时间:2015-04-19 11:25:01

标签: matlab machine-learning neural-network

保持所有参数不变,在重新训练神经网络时,我的测试数据得到不同的平均百分比误差。为什么会这样?并非神经网络训练过程的所有组成部分都具有确定性吗?有时,我发现连续培训的差异高达1%。

培训代码在

之下
netFeb = newfit(trainX', trainY', networkConfigFeb);
netFeb.performFcn = 'mae';
netFeb = trainlm(netFeb, trainX', trainY');

% Index for the testing Data
startingInd = find(trainInd == 0, 1, 'first');
endingInd = startingInd + daysInMonth('Feb') - 1 ;

% Testing Data
testX = X(startingInd:endingInd,:);
testY = dailyPeakLoad(startingInd:endingInd,:);
actualLoadFeb = testY;

% Calculate the Forcast Load and the Mean Absolute Percentage Error
forecastLoadFeb = sim(netFeb, testX'';
errFeb = testY - forecastLoadFeb;
errpct = abs(errFeb)./testY*100;
MAPEFeb = mean(errpct(~isinf(errpct)));

1 个答案:

答案 0 :(得分:2)

正如A. Donda所暗示的那样,由于神经网络随机初始化它们的权重,它们将在训练后生成不同的网络。因此它会给你不同的表现。虽然培训过程是确定性的,但初始值不是!因此,您可能会以不同的本地最小值结束或停在不同的地方。

如果您想了解原因,请查看Why should weights of Neural Networks be initialized to random numbers

修改1:

注释

  • 由于用户手动定义测试/训练数据,因此没有选择训练数据集的随机化