Matlab ANN人工神經網絡 validation checks

 bp網絡設置以下:算法

%建立網絡
% logsig:對數S形轉移函數,單極性;tansig: 雙極性S形轉移函數;purelin:線性函數   
% traingdx :梯度降低自適應學習率訓練函數,traingdm,trainlm, trainscg 這些是權值的學習算法
% traingdm是帶動量的梯度降低法,trainlm是指L-M優化算法,trainscg是指量化共軛梯度法
net=newff(minmax(p1),[8, 15, 12, 1],{'tansig', 'tansig','tansig','purelin'},'trainlm');
%設置訓練次數
net.trainParam.epochs = 600;
%設置收斂偏差
net.trainParam.goal=0.0001;
%設置學習率
net.trainParam.lr = 0.003 ;
%設置動量因子,避免局部最優和過擬合
net.trainParam.mc=0.9; 
%最小確認失敗次數
net.trainParam.max_fail=6;
%設置訓練數據 比例:訓練:驗證:測試
net.divideFcn              = 'divideblock'  ;
net.divideParam.trainRatio = 0.7;
net.divideParam.valRatio   = 0.15;
net.divideParam.testRatio  = 0.15;

   對上述bp神經網絡進行訓練的時候,訓練結果尚未達到目標的精度,就因爲validation checks的值達到了6而中止了進一步的訓練,以下圖:網絡

    神經網絡的樣本默認狀況下會將樣本隨即分爲3類:訓練樣本,確認樣本和測試樣本。
    確認檢查值默認是6,它的意思是指隨着網絡利用訓練樣本進行訓練的過程當中,確認樣本的偏差曲線連續6次迭代再也不降低。這時訓練終止(這只是訓練終止條件之一,知足任一終止條件,訓練過程都將終止)。
    深層含義你能夠這樣理解,若是隨着網絡的訓練,確認樣本的偏差已經基本不在減少,甚至增大,那麼就沒有必要再去訓練網絡了,由於繼續訓練下去的話,在利用測試樣本進行測試網絡的話,測試樣本的偏差將一樣不會有所改善,甚至會出現過分擬合的現象。ide

    根據《matlab人工神經網絡參數》的提示,能夠經過下面的設置來改變Validation Checks的值函數

net.trainParam.max_fail=100;                 % 最小確認失敗次數
相關文章
相關標籤/搜索