資源簡介
利用現(xiàn)最流行的神經(jīng)網(wǎng)絡(luò)模型,在數(shù)學(xué)建模中根據(jù)已有的數(shù)據(jù)通過學(xué)習(xí)進(jìn)行預(yù)測
代碼片段和文件信息
clc
clear?all
close?all
%bp?神經(jīng)網(wǎng)絡(luò)的預(yù)測代碼
%載入輸出和輸入數(shù)據(jù)
p=[61
61
61
61
61
61
61
61
61
61
61
63
63
63
63
64
64
64
64
64
]‘;
%load?C:\Users\amzon\Desktop\p.txt;
t=[66
66
67
67
67
67
64
64
67
67
67
67
67
67
67
67
67
67
64
64
64
64
64
64
67
67
67
67
67
66
66
66
61
61
61
61
61
61
55
55
61
61
66
66
66
66
66
68
68
68
65
65
65
65
66
66
66
66
66
]‘;
%load?C:\Users\amzon\Desktop\t.txt;
%保存數(shù)據(jù)到matlab的工作路徑里面
save?p.mat;
save?t.mat;?%注意t必須為行向量
%賦值給輸出p和輸入t
p=p;
t=t;
%數(shù)據(jù)的歸一化處理,利用mapminmax函數(shù),使數(shù)值歸一化到[-1.1]之間
%該函數(shù)使用方法如下:[yps]?=mapminmax(xyminymax),x需歸化的數(shù)據(jù)輸入,
%ymin,ymax為需歸化到的范圍,不填默認(rèn)為歸化到[-11]
%返回歸化后的值y,以及參數(shù)ps,ps在結(jié)果反歸一化中,需要調(diào)用
[p1ps]=mapminmax(p);
[t1ts]=mapminmax(t);
%確定訓(xùn)練數(shù)據(jù),測試數(shù)據(jù)一般是隨機的從樣本中選取70%的數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)
%15%的數(shù)據(jù)作為測試數(shù)據(jù),一般是使用函數(shù)dividerand,其一般的使用方法如下:
%[trainIndvalIndtestInd]?=?dividerand(QtrainRatiovalRatiotestRatio)
[trainsample.pvalsample.ptestsample.p]?=dividerand(p0.70.150.15);
[trainsample.tvalsample.ttestsample.t]?=dividerand(t0.70.150.15);
%建立反向傳播算法的BP神經(jīng)網(wǎng)絡(luò),使用newff函數(shù),其一般的使用方法如下
%net?=?newff(minmax(p)[隱層的神經(jīng)元的個數(shù),輸出層的神經(jīng)元的個數(shù)]{隱層神經(jīng)元的傳輸函數(shù),輸出層的傳輸函數(shù)}‘反向傳播的訓(xùn)練函數(shù)‘)其中p為輸入數(shù)據(jù),t為輸出數(shù)據(jù)
%tf為神經(jīng)網(wǎng)絡(luò)的傳輸函數(shù),默認(rèn)為‘tansig‘函數(shù)為隱層的傳輸函數(shù),
%purelin函數(shù)為輸出層的傳輸函數(shù)
%一般在這里還有其他的傳輸?shù)暮瘮?shù)一般的如下,如果預(yù)測出來的效果不是很好,可以調(diào)節(jié)
%TF1?=?‘tansig‘;TF2?=?‘logsig‘;
%TF1?=?‘logsig‘;TF2?=?‘purelin‘;
%TF1?=?‘logsig‘;TF2?=?‘logsig‘;
%TF1?=?‘purelin‘;TF2?=?‘purelin‘;
TF1=‘tansig‘;TF2=‘purelin‘;
net=newff(minmax(p)[101]{TF1?TF2}‘traingdm‘);%網(wǎng)絡(luò)創(chuàng)建
%網(wǎng)絡(luò)參數(shù)的設(shè)置
net.trainParam.epochs=10000;%訓(xùn)練次數(shù)設(shè)置
net.trainParam.goal=1e-7;%訓(xùn)練目標(biāo)設(shè)置
net.trainParam.lr=0.01;%學(xué)習(xí)率設(shè)置應(yīng)設(shè)置為較少值,太大雖然會在開始加快收斂速度,但臨近最佳點時,會產(chǎn)生動蕩,而致使無法收斂
net.trainParam.mc=0.9;%動量因子的設(shè)置,默認(rèn)為0.9
net.trainParam.show=25;%顯示的間隔次數(shù)
%?指定訓(xùn)練參數(shù)
%?net.trainFcn?=?‘traingd‘;?%?梯度下降算法
%?net.trainFcn?=?‘traingdm‘;?%?動量梯度下降算法
%?net.trainFcn?=?‘traingda‘;?%?變學(xué)習(xí)率梯度下降算法
%?net.trainFcn?=?‘traingdx‘;?%?變學(xué)習(xí)率動量梯度下降算法
%?(大型網(wǎng)絡(luò)的首選算法)
%?net.trainFcn?=?‘trainrp‘;?%?RPROP(彈性BP)算法內(nèi)存需求最小
%?共軛梯度算法
%?net.trainFcn?=?‘trai
評論
共有 條評論