如何用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

精度是自己设定的,是那个水平的直线,这里的神经网络没有best曲线,就是个goal和training两条的。是训练过程中的误差曲线,表示经过X次训练,感知器输出达到目标值,也就是感知器的输出已经和目标向量一致了。

每一代BP训练过程的MSE指标的性能,每一代BP交叉验证过程的MSE指标shu的性能以及BP测试的MSE指标在每一代中执行的过程。 特别是,应该注意内部的TEST红线,这是BP计算/训练结果。

扩展资料:

BP(Back Propagation)神经网络是由Rumelhart和McCelland领导的一组科学家于1986年提出的。BP(Back Propagation)是由反向传播误差反向传播算法训练的多层前馈网络,是使用最广泛的神经网络模型之一。

BP网络可以学习并存储大量的输入-输出模式映射关系,而无需事先揭示描述这些映射关系的数学方程式。 BP网络的学习规则是使用最速下降法,并通过反向传播来不断调整网络的权重和阈值,以最小化网络的平方误差之和。 BP神经网络模型的拓扑包括输入层,隐藏层和输出层。

-BP神经网络

%% BP算法

function Out=bpnet(p,t,p_test)

S1=5; 

%threshold=[0 pi/2;0 pi/2];

%net=newff(threshold,[5,2],{'tansig','purelin'},'trainlm');

net=newff(minmax(p),[S1,2],{'tansig','purelin'},'trainlm');

%net=newff(P,T,5,{'tansig','purelin'},'trainlm');%新版用法

nettrainParamepochs=1000;

nettrainParamgoal=000001;

nettrainParamlr=001;

nettrainParamshowWindow = false;      %阻止训练窗口的d出

nettrainParamshowCommandLine = false; %阻止训练窗口的d出

net=train(net,p,t);

Out=sim(net,p_test);

end

上次那个问题也是你问的吧?

把上次产生的p和t,用mapminmax函数进行归一化后,传递给这个函数即可,测试的p也可以现在就加进去。

BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)和输出层(output layer)。

是的,Matlab提供了神经网络工具箱,其中包括多种神经网络算法和函数。用户可以使用这些现成的包来构建、训练和测试神经网络模型,以实现各种任务,如分类、回归、聚类等。神经网络工具箱还提供了可视化工具和交互式界面,以简化神经网络建模和分析的过程。除了常见的前馈神经网络、反馈神经网络和自组织神经网络,Matlab神经网络工具箱还包括以下算法和函数:

1 卷积神经网络(Convolutional Neural Networks, CNNs):用于处理图像、视频等数据的神经网络结构。

2 循环神经网络(Recurrent Neural Networks, RNNs):用于处理序列数据的神经网络结构,如文本、语音等。

3 长短时记忆网络(Long Short-Term Memory Networks, LSTM):一种特殊的循环神经网络,用于处理长序列数据的模型。

4 限制玻尔兹曼机(Restricted Boltzmann Machines, RBMs):一种用于学习数据分布的无监督学习模型。

5 自编码器(Autoencoder):一种用于学习数据表征的模型,可以用于压缩、降噪和特征提取等任务。

6 深度强化学习(Deep Reinforcement Learning):结合深度学习和强化学习的技术,用于解决复杂的决策问题。

此外,Matlab还提供了丰富的神经网络函数库,用于模型初始化、训练、调试和评估等方面的 *** 作。用户可以根据具体需求选择适合的算法和函数,进行定制化的神经网络建模和分析。

一:minmax()

minmax(A) 即是求解A矩阵中每个 行向量 中的最小值和最大值

eg:A=[1 2 4 -6 ;

             3 -4 90 6;

             4 6 -23 -35];

         P=minmax(A)

         P = -6    4

              -4    90

              -35    6

二:hold on 和hold off

hold on 是当前轴及图像保持而不被刷新,准备接受此后将绘制的图形,多图共存即,启动图形保持功能,当前坐标轴和图形都将保持,从此绘制的图形都将添加在这个图形的基础上,并自动调整坐标轴的范围。

hold off 使当前轴及图像不再具备被刷新的性质,新图出现时,取消原图。即,关闭图形保持功能。

hold on 和hold off,是相对使用的

前者的意思是,你在当前图的轴(坐标系)中画了一幅图,再画另一幅图时,原来的图还在,与新图共存,都看得到

后者表达的是,你在当前图的轴(坐标系)中画了一幅图,此时,状态是hold off,则再画另一幅图时,原来的图就看不到了,在轴上绘制的是新图,原图被替换了。

三:rand 和 randn

rand是0-1的均匀分布,randn是均值为0方差为1的正态分布;

rand(n)或randn(n)生成nn的随机数矩阵。

rand(n,m)或randn(m,n)生成mn的随机数矩阵。

四:gac、gca 和 gco

gcf 返回当前Figure对象的句柄值

gca 返回当前axes对象的句柄值

gco 返回当前鼠标单击的句柄值,该对象可以是除root对象外的任意图形对象,并且Matlab会把当前图形对象的句柄值存放在Figure的CurrentObject属性中。

五:compet

compet是神经网络的竞争传递函数,用于指出矩阵中每列的最大值。对应最大值的行的值为1,其他行的值都为0。

六:bar和barn

二维条形图:bar()

bar(Y) 如果Y为矢量,其每一个元素绘制一个条形;如果Y为矩阵,侧bar函数对每一行元素绘制的条形进行分组。

bar(x,Y) 按x中指定的位置绘制Y中每一元素的条形。

bar(…,width) 设置相邻条形的宽度并控制组内条形的分离,默认值为08,如果指定width=1,则组内的条形挨在一起。

bar(…,’style’) 指定绘制条形的类型,style有两个选项:(1) stacked 矩阵Y中每一行绘制一个条形,条形的高度为行元素中元素的和,每一个条形都用多种颜色表示,颜色对应不同种类的元素并表示每行元素对总和的相对贡献。(2) group 绘制n条形图组,每一个条形组中有m个垂直条形,其中n对应矩阵Y的行数,m对应列数,group为style的默认值。

bar(…,LineSpec) 用LineSpec指定的颜色绘制条形。

h=bar(…) 返回图形句柄。

barh(…) 绘制水平条形图。

h=barh(…) 返回水平条形图的图形句柄。

三维条形图:bar3()和barah()

bar3(Y) 绘制三维条形图,如果Y为矢量,其每一个元素绘制一个条形;如果Y为矩阵,侧bar函数对每一行元素绘制的条形进行分组。

bar3(x,Y) 按x中指定的位置绘制Y中每一元素的条形。

bar3(…,width) 设置相邻条形的宽度并控制组内条形的分离,默认值为08,如果指定width=1,则组内的条形挨在一起。

bar3(…,’style’) 指定绘制条形的类型,style有3个选项:(1) stacked 矩阵Y中每一行绘制一个条形,条形的高度为行元素中元素的和,每一个条形都用多种颜色表示,颜色对应不同种类的元素并表示每行元素对总和的相对贡献。(2) group 绘制n条形图组,每一个条形组中有m个垂直条形,其中n对应矩阵Y的行数,m对应列数,group为style的默认值。(3) detached 在x方向用单独的条形块绘制Y中的每一行元素,detached为style的默认值;

bar3(…,LineSpec) 用LineSpec指定的颜色绘制条形。

h=bar3(…) 返回三维条形图的图形句柄。

barh(…) 绘制三维水平条形图。

h=barh(…) 返回三维水平条形图的图形句柄。

三维条形图有两种显示形式:分组形式和行列形式。

未完待续

贴出的代码比较少,从贴出的代码来看,trtestMask{1}的{1}代表trtestMask是一个cell格式,{1}是cell中的第一个元素。

因为matlab的工具箱中,通常会储存很多信息,信息格式不同,就要用cell来存储,

楼主可以打开trtestMask来看看其它trtestMask{2},trtestMask{3}里存的什么信息,可能能推出trtestMask{1}的实际意思。

楼主的程序最好全部贴出,数据也贴出 这样才能知道它的具体意思。

纯手打

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存