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; % 最小確認失敗次數