Ⅰ 如何用MATLAB的神经网络工具箱实现三层BP网络
这是一个来自<神经网络之家>nnetinfo的例子,在matlab2012b运行后的确可以,因为网络知道的文本宽度不够,注释挤到第二行了,有些乱,楼主注意区分哪些是代码哪些是注释,
x1 =
[-3,-2.7,-2.4,-2.1,-1.8,-1.5,-1.2,-0.9,-0.6,-0.3,0,0.3,0.6,0.9,1.2,1.5,1.8]; %x1:x1 = -3:0.3:2;
x2 =
[-2,-1.8,-1.6,-1.4,-1.2,-1,-0.8,-0.6,-0.4,-0.2,-2.2204,0.2,0.4,0.6,0.8,1,1.2];%x2:x2 = -2:0.2:1.2;
y = [0.6589,0.2206,-0.1635,-0.4712,-0.6858,-0.7975,-0.8040,...
-0.7113,-0.5326,-0.2875
,0,0.3035,0.5966,0.8553,1.0600,1.1975,1.2618]; %y:
y = sin(x1)+0.2*x2.*x2;
inputData = [x1;x2]; %将x1,x2作为输入数据
outputData = y; %将y作为输出数据
%使用用输入输出数据(inputData、outputData)建立网络,
%隐节点个数设为3.其中隐层、输出层的传递函数分别为tansig和purelin,使用trainlm方法训练。
net = newff(inputData,outputData,3,{'tansig','purelin'},'trainlm');
%设置一些常用参数
net.trainparam.goal = 0.0001;
%训练目标:均方误差低于0.0001
net.trainparam.show = 400; %每训练400次展示一次结果
net.trainparam.epochs = 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怎么打开神经网络工具箱
1单击Apps,在搜索框中输入neu,下方出现了所有神经网络工具箱。neural net fitting 是我们要使回用的神答经网络拟合工具箱。
2
在下界面中点击next
3
单击load example data set,得到我们需要的测试数据。
4
单击import
5
单击next
6
单击next
7
数字“10”表示有10个隐含层。单击next。
8
单击train,开始训练。
9
训练过程跳出的小窗口。
10
训练结果。其中MSE表示均方差,R 表示相关系数。单击next。
11
这里可以调整神经网络,也可以再次训练。单击next。
12
在这里,可以保存结果。如果不需要,直接finish。
Ⅲ matlab神经网络工具箱具体怎么用
为了看懂师兄的文章中使用的方法,研究了一下神经网络
昨天花了一天的时间查怎么写程序,但是费了半天劲,不能运行,网络知道里倒是有一个,可以运行的,先贴着做标本
% 生成训练样本集
clear all;
clc;
P=[110 0.807 240 0.2 15 1 18 2 1.5;
110 2.865 240 0.1 15 2 12 1 2;
110 2.59 240 0.1 12 4 24 1 1.5;
220 0.6 240 0.3 12 3 18 2 1;
220 3 240 0.3 25 3 21 1 1.5;
110 1.562 240 0.3 15 3 18 1 1.5;
110 0.547 240 0.3 15 1 9 2 1.5];
0 1.318 300 0.1 15 2 18 1 2];
T=[54248 162787 168380 314797;
28614 63958 69637 82898;
86002 402710 644415 328084;
230802 445102 362823 335913;
60257 127892 76753 73541;
34615 93532 80762 110049;
56783 172907 164548 144040];
@907 117437 120368 130179];
m=max(max(P));
n=max(max(T));
P=P'/m;
T=T'/n;
%-------------------------------------------------------------------------%
pr(1:9,1)=0; %输入矢量的取值范围矩阵
pr(1:9,2)=1;
bpnet=newff(pr,[12 4],{'logsig', 'logsig'}, 'traingdx', 'learngdm');
%建立BP神经网络, 12个隐层神经元,4个输出神经元
%tranferFcn属性 'logsig' 隐层采用Sigmoid传输函数
%tranferFcn属性 'logsig' 输出层采用Sigmoid传输函数
%trainFcn属性 'traingdx' 自适应调整学习速率附加动量因子梯度下降反向传播算法训练函数
%learn属性 'learngdm' 附加动量因子的梯度下降学习函数
net.trainParam.epochs=1000;%允许最大训练步数2000步
net.trainParam.goal=0.001; %训练目标最小误差0.001
net.trainParam.show=10; %每间隔100步显示一次训练结果
net.trainParam.lr=0.05; %学习速率0.05
bpnet=train(bpnet,P,T);
%-------------------------------------------------------------------------
p=[110 1.318 300 0.1 15 2 18 1 2];
p=p'/m;
r=sim(bpnet,p);
R=r'*n;
display(R);
运行的结果是出现这样的界面
点击performance,training state,以及regression分别出现下面的界面
再搜索,发现可以通过神经网络工具箱来创建神经网络,比较友好的GUI界面,在输入命令里面输入nntool,就可以开始了。
点击import之后就出现下面的具体的设置神经网络参数的对话界面,
这是输入输出数据的对话窗
首先是训练数据的输入
然后点击new,创建一个新的神经网络network1,并设置其输入输出数据,包括名称,神经网络的类型以及隐含层的层数和节点数,还有隐含层及输出层的训练函数等
点击view,可以看到这是神经网络的可视化直观表达
创建好了一个network之后,点击open,可以看到一个神经网络训练,优化等的对话框,选择了输入输出数据后,点击train,神经网络开始训练,如右下方的图,可以显示动态结果
下面三个图形则是点击performance,training state以及regression而出现的
下面就是simulate,输入的数据是用来检验这个网络的数据,output改一个名字,这样就把输出数据和误差都存放起来了
在主界面上点击export就能将得到的out结果输入到matlab中并查看
下图就是输出的两个outputs结果
还在继续挖掘,to be continue……
Ⅳ 神经网络工具箱与编程实现哪个更好
首先说一下神经网络工具箱,在我刚刚接触神经网络的时候,我就利用工具箱去解决问题,这让我从直观上对神经网络有了了解,大概清楚了神经网络的应用范围以及它是如何解决实际问题的。
工具箱的优势在于我们不用了解其内部的具体实现,更关注于模型的建立与问题的分析,也就是说,如果抛开算法的错误,那么用工具箱来解决实际问题会让我们能把更多的精力放在实际问题的模型建立上,而不是繁琐的算法实现以及分析上。
其次谈谈编程实现神经网络,由于个人能力有限,所以只是简单的编程实现过一些基本神经算法,总的体会就是编程的过程让我对算法有了更透彻的理解,可以更深入的分析其内部运行机制,也同样可以实现一下自己的想法,构建自己的神经网络算法。
以上是我对两个方法的简单理解。那究竟哪个方法更好些呢?我个人的看法是要看使用者的目的是怎样的。
如果使用者的目的在于解决实际问题,利用神经网络的函数逼近与拟合功能实现自己对实际问题的分析与模型求解,那我的建议就是利用神经网络工具箱,学过编程语言的人都知道,无论用什么编程语言将一个现有的算法编程实现达到可用的结果这一过程都是及其繁琐与复杂的,就拿简单的经典BP神经网络算法来说,算法本身的实现其实并不难,可根据不同人的能力,编出来的程序的运行效率是大不相同的,而且如果有心人看过matlab的工具箱的源码的话,应该能发现,里面采用的方法并不完全是纯粹的BP经典算法,一个算法从理论到实现还要依赖与其他算法的辅助,计算机在计算的时候难免出现的舍入误差,保证权值的时刻改变,这都是编程人员需要考虑的问题,可能还有很多的问题
这样的话,如果自己单人编程去实现神经网络来解决实际问题的话,整体效率就没有使用工具箱更好。
如果使用者的目的在于分析算法,构造新的网络的话那当然首推自己编程实现。个人的感觉就是,如果真的是自己完全编程实现的话,对算法会有很深入的理解,在编程的调试过程中,也会领悟到很多自己从前从来没有考虑过的问题,像权值的初始的随机选取应该怎么样,将训练样本按什么顺序输入等,这都是编程实现所要考虑的问题,不同的方法得到的结果会有很大的差距。
Ⅳ Matlab神经网络工具箱问题~
这好像和你的输出有关。您输出的矩阵是什么?你可以把你的神经网络发上来看看。
Ⅵ MATLAB神经网络工具箱configure函数使用
你想要什么解释?这句话是在为你的神经网络(net)配置每个RTDX缓冲channel中的字节位数版(p)和缓冲权channel的数量(t)。RTDX(real time data exchange)实时数据交换。如果你懂低级计算机编程语言的话应该很好理解。这句话基本可以大致理解为为你的神经网络划出一个计算的空间。神经网络算法本身极其复杂,甚至有很多conference是专门讨论该算法的。matlab作为高级程序语言,出发点是把所有算法打包好使用户方便使用。要做到这个对一些基础算法来说并不难。但是神经网络本身就是一大堆算法的集成,简单打包算法不太可能。使用这个工具箱你只需要知道大致原理,再找几个模板依样画葫芦练习一下就可以了,没必要全弄明白
Ⅶ matlab中bp神经网络的工具箱怎么用,不要matlab程序,就工具箱怎么实现问题的解决
matlab中神经网络的工具箱:输入nntool,就会弹出一个对话框,然后你就可以根据弹出框的指示来操作。
Ⅷ 你好,请问你知道在matlab神经网络工具箱里,学习率在哪里设置吗
lr就是学习率,performance是主要指标,你在程序里写的goal就是MSE,决定最后精度的。
%%BP算法
functionOut=bpnet(p,t,p_test)
globalS1
net=newff(minmax(p),[S1,8],{'tansig','purelin'},'trainlm');%trainlm训练函数最有版效
%net=newff(P,T,31,{'tansig','purelin'},'trainlm');%新版用权法
net.trainParam.epochs=1000;
net.trainParam.goal=0.00001;
net.trainParam.lr=0.01;%这是学习率
net=train(net,p,t);
Out=sim(net,p_test);
end
Ⅸ 在哪能下的matlab的神经网络工具箱
MATLAB的神经自网络工具箱是内置的,如果完全安装了MATLAB,那么你可以在MATLAB的帮助页面上(帮助页面可以在Comand Window下输入'help help '(不名括单引号),然后看Contents里有 Neural Network Toolbox。
神经网络工具箱有个教学GUI,可以在Comand Window下输nnd'(不名括单引号,小写)(因为这个教学GUI是和一本书结合的,这本书叫Neural Network Design,作者Martin T.Hagan,Howard B.Demuth,强烈推荐学习这本经典教材,会让你入门并稍有进阶)