📄 bp.m
字号:
clear;
clc;
AnalysisDataName='S1132MA';
%加载训练的数据
load TrainData.txt;
[TrainData_Row,TrainData_Column]=size(TrainData);
P=TrainData(:,1:TrainData_Column-1);
T=TrainData(:,TrainData_Column);
P=P';
T=T';
%对数据进行归一化处理
[AnalysisData_Assistant_Min_Max,AnalysisData_Min_Max]=WYH_Get_Min_Max(AnalysisDataName);
P=WYH_Unit(P,AnalysisData_Assistant_Min_Max);
T=WYH_Unit(T,AnalysisData_Min_Max);
%定义BP神经网络
%----------------------------------------------------------------------------------------
%|************************构造三层(包括输入层)BP神经网络模型**************************|
%----------------------------------------------------------------------------------------
%1.生成BP网络
R=size(AnalysisData_Assistant_Min_Max,1);%输入层
S1=6;%隐层神经元个数
S2=1;%输出层神经元个数
PR=AnalysisData_Assistant_Min_Max;
net=newff(PR,[S1,S2],{'tansig','purelin'});
%3.训练和自适应调整
net.adaptFcn='trains';
net.trainFcn='trainlm';
net.trainParam.epochs=1000;
net.trainParam.goal=1e-2;
%net.trainParam.mu=0.001;
%net.trainParam.mu_dec=0.1;
%net.trainParam.mu_inc=10;
%net.trainParam.mu_max=1e10;
%net.trainParam.max_fail=5;
%net.trainParam.mem_reduc=1;
%net.trainParam.min_grad=1e-10;
%net.trainParam.show=25;
%net.trainParam.time=inf;
%4.性能评价函数
net.performFcn='mse';
Begin_Input_W=net.IW{1,1};
save SaveResult\Begin_Input_W.txt Begin_Input_W -ascii;
Begin_LayerOne_Bias=net.b{1};
save SaveResult\Begin_LayerOne_Bias.txt Begin_LayerOne_Bias -ascii;
Begin_LayerOneToTwo_W=net.LW{2,1};
save SaveResult\Begin_LayerOneToTwo_W.txt Begin_LayerOneToTwo_W -ascii;
Begin_LayerTwo_Bias=net.b{2};
save SaveResult\Begin_LayerTwo_Bias.txt Begin_LayerTwo_Bias -ascii;
%-------------------------------------------------------------------------
%-*******************************训练网络模型*****************************-
%--------------------------------------------------------------------------
[net,TR]=train(net,P,T);
%--------------------------------------------------------------------------
%-*******************************仿真网络模型*****************************-
%--------------------------------------------------------------------------
figure(2);
Model_T=sim(net,P);
%反归一化
Model_T=WYH_ReverseUnit(Model_T,AnalysisData_Min_Max);
Theory_T=WYH_ReverseUnit(T,AnalysisData_Min_Max);
%--------------------------------------------------------------------------
%-*******************************拟和数据作图显示*************************-
%--------------------------------------------------------------------------
%subplot(2,1,1);
xLabel=1:size(Theory_T,2);
plot(xLabel,Theory_T,'-K',xLabel,Model_T,':R');%黑色显示是理论值,红色显示是模型计算值
title(AnalysisDataName);
%--------------------------------------------------------------------------
%-*******************************神经网络的保存***************************-
%--------------------------------------------------------------------------
save SaveResult\net.dat net;
Input_W=net.IW{1,1};
save SaveResult\Input_W.txt Input_W -ascii;
LayerOne_Bias=net.b{1};
save SaveResult\LayerOne_Bias.txt LayerOne_Bias -ascii;
LayerOneToTwo_W=net.LW{2,1};
save SaveResult\LayerOneToTwo_W.txt LayerOneToTwo_W -ascii;
LayerTwo_Bias=net.b{2};
save SaveResult\LayerTwo_Bias.txt LayerTwo_Bias -ascii;
[Extend_Theory_T,Extend_Model_T]=ExtraPolate(net,AnalysisDataName);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -