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

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

这是一个来自<神经网络之家>nnetinfo的例子,在matlab2012b运行后的确可以,因为的文本宽度不够,注释挤到第二行了,有些乱,楼主注意区分哪些是代码哪些是注释,

x1 =

[-3,-27,-24,-21,-18,-15,-12,-09,-06,-03,0,03,06,09,12,15,18]; %x1:x1 = -3:03:2;

x2 =

[-2,-18,-16,-14,-12,-1,-08,-06,-04,-02,-22204,02,04,06,08,1,12];%x2:x2 = -2:02:12;

y = [06589,02206,-01635,-04712,-06858,-07975,-08040,

-07113,-05326,-02875

,0,03035,05966,08553,10600,11975,12618]; %y:

y = sin(x1)+02x2x2;

inputData = [x1;x2]; %将x1,x2作为输入数据

outputData = y; %将y作为输出数据

%使用用输入输出数据(inputData、outputData)建立网络,

%隐节点个数设为3其中隐层、输出层的传递函数分别为tansig和purelin,使用trainlm方法训练。

net = newff(inputData,outputData,3,{'tansig','purelin'},'trainlm');

%设置一些常用参数

nettrainparamgoal = 00001;

%训练目标:均方误差低于00001

nettrainparamshow = 400; %每训练400次展示一次结果

nettrainparamepochs = 15000;

%最大训练次数:15000

[net,tr] = train(net,inputData,outputData);%调用matlab神经网络工具箱自带的train函数训练网络

simout = sim(net,inputData);

%调用matlab神经网络工具箱自带的sim函数得到网络的预测值

figure; %新建画图窗口窗口

t=1:length(simout);

plot(t,y,t,simout,'r')%画图,对比原来的y和网络预测的y

你需要的功能比较简单,可以考虑直接使用MATLAB提供的神经网络图形用户界面(Neural Network Graphic User Interface)的功能。

在Matlab命令窗口敲nntool命令调出来,打开Network/Data管理器窗口,再点击New,按步骤 *** 作即可。在里面可以设置哪些是训练数据样本,哪些是验证网络泛化能力的样本。

Matlab神经网络工具箱提供了一系列用于建立和训练bp神经网络模型的函数命令,很难一时讲全。下面仅以一个例子列举部分函数的部分用法。更多的函数和用法请仔细查阅Neural Network Toolbox的帮助文档。

例子:利用bp神经网络模型建立z=sin(x+y)的模型并检验效果

%第1步。随机生成200个采样点用于训练

x=unifrnd(-5,5,1,200);

y=unifrnd(-5,5,1,200);

z=sin(x+y);

%第2步。建立神经网络模型。其中参数一是输入数据的范围,参数二是各层神经元数量,参数三是各层传递函数类型。

N=newff([-5 5;-5 5],[5,5,1],{'tansig','tansig','purelin'});

%第3步。训练。这里用批训练函数train。也可用adapt函数进行增长训练。

N=train(N,[x;y],z);

%第4步。检验训练成果。

[X,Y]=meshgrid(linspace(-5,5));

Z=sim(N,[X(:),Y(:)]');

figure

mesh(X,Y,reshape(Z,100,100));

hold on;

plot3(x,y,z,'')

%采用动量梯度下降算法训练 BP 网络。

close all

clear

echo on

clc

% NEWFF——生成一个新的前向神经网络

% TRAIN——对 BP 神经网络进行训练

% SIM——对 BP 神经网络进行仿真

pause

% 敲任意键开始

clc

% 定义训练样本

% P 为输入矢量 pau

P=[-1,-2,3,1;-1,1,5,-3];

% T 为目标矢量

T=[-1, -1, 1, 1];

pause;

clc

% 创建一个新的前向神经网络

minmax(P)

net=newff(minmax(P),[3,1],{'tansig''purelin'},'traingdm');

% minmax(P)取值范围是P内的最小值到最大值 [3,1]是3个神经元 1维 tansig purelin traingdm各层神经网络的激励函数

% tansig purelin隐含层更改权值的函数 当前输入层权值和阈值

inputWeights=netIW{1,1};

inputbias=netb{1};

% 当前网络层权值和阈值

layerWeights=netLW{2,1};

layerbias=netb{2};

%表示对各层神经网络的权值与阈值传递到相应变量

pause

clc

% 设置训练参数

nettrainParamshow = 50; %训练显示间隔 50次显示一次

nettrainParamlr = 005; %学习步长005学习率

nettrainParammc = 09; %动量项系数09

nettrainParamepochs = 1000; %训练次数1000次

nettrainParamgoal = 1e-3; %训练精度目标为0001

pause

clc

% 调用 traingdm 算法训练 BP 网络

[net,tr]=train(net,P,T);%调用网络指令

pause

clc

% 对 BP 网络进行仿真

A=sim(net,P)

% 计算仿真误差

E=T-A

MSE=mse(E)

pause

clc

echo off

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/12178543.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存