如何用MATLAB的神经网络工具箱实现三层BP网络

更新时间:2023-09-28 14:34:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

如何用MATLAB的神经网络工具箱实现三层BP网络?

% 读入训练数据和测试数据 Input = []; Output = []; str = {'Test','Check'}; Data = textread([str{1},'.txt']); % 读训练数据 Input = Data(:,1:end-1);

% 取数据表的前五列(主从成分) Output = Data(:,end);

% 取数据表的最后一列(输出值) Data = textread([str{2},'.txt']); % 读测试数据

CheckIn = Data(:,1:end-1); % 取数据表的前五列(主从成分) CheckOut = Data(:,end);

% 取数据表的最后一列(输出值) Input = Input'; Output = Output'; CheckIn = CheckIn'; CheckOut = CheckOut'; % 矩阵赚置

[Input,minp,maxp,Output,mint,maxt] = premnmx(Input,Output); % 标准化数据

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% 神经网络参数设置 %====可以修正处 Para.Goal = 0.0001; % 网络训练目标误差 Para.Epochs = 800; % 网络训练代数 Para.LearnRate = 0.1; % 网络学习速率 %==== Para.Show = 5; % 网络训练显示间隔

Para.InRange = repmat([-1 1],size(Input,1),1); % 网络的输入变量区间

Para.Neurons = [size(Input,1)*2+1 1]; % 网络后两层神经元配置

Para.TransferFcn= {'logsig' 'purelin'}; % 各层的阈值函数 Para.TrainFcn = 'trainlm'; % 网络训练函数赋值

% traingd : 梯度下降后向传播法

% traingda : 自适应学习速率的梯度下降法 % traingdm : 带动量的梯度下降法 % traingdx :

% 带动量,自适应学习速率的梯度下降法 Para.LearnFcn = 'learngdm'; % 网络学习函数 Para.PerformFcn = 'sse'; % 网络的误差函数 Para.InNum = size(Input,1); % 输入量维数

Para.IWNum = Para.InNum*Para.Neurons(1); % 输入权重个数

Para.LWNum = prod(Para.Neurons); % 层权重个数

Para.BiasNum = sum(Para.Neurons); % 偏置个数

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Net = newff(Para.InRange,Para.Neurons,Para.TransferFcn,... Para.TrainFcn,Para.LearnFcn,Para.PerformFcn); % 建立网络

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Net.trainParam.show = Para.Show; % 训练显示间隔赋值

Net.trainParam.goal = Para.Goal; % 训练目标误差赋值

Net.trainParam.lr = Para.LearnRate; % 网络学习速率赋值

Net.trainParam.epochs = Para.Epochs; % 训练代数赋值

Net.trainParam.lr = Para.LearnRate;

Net.performFcn = Para.PerformFcn; % 误差函数赋值

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 调试

Out1 =sim(Net,Input); % 仿真刚建立的网络 Sse1 =sse(Output-Out1); % 刚建立的网络误差

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [Net TR] = train(Net,Input,Output); % 训练网络并返回

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Out3 =sim(Net,Input); % 对学习训练后的网络仿真

本文来源:https://www.bwwdw.com/article/9sjd.html

Top