这是一个来自<神经网络之家>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}的实际意思。
楼主的程序最好全部贴出,数据也贴出 这样才能知道它的具体意思。
纯手打
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)