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