㈠ matlab神经网络建立是无法正确调用gensim(net,-1)
字面是参数设置不对,但是官方工具箱不允许编译,所以找不到具体错在哪里。
如果你用的matlab版本和教材上不一样的话,有些工具箱的函数会更新。
以2010b版本为例,这个函数命令是这样 [sysName,netName] = gensim(net,'InputMode','Workspace',...
'OutputMode','WorkSpace','SolverMode','Discrete');
我们安装新版本的时候会把所有工具箱都更新,这样很多函数(特别是simulink,神经网络工具箱中的)都会有一些变化。
您需要输入help gensim,然后查看你现在版本的参数含义,再把教材当中对应的参数按格式填入。
㈡ matlab神经网络工具箱中newrb(P,T,GOAL,SPEARD,MN,DF)什么意思
在command window输入edit newrb,有如下参数说明:
<a href="matlab:doc newrb">newrb</a>(X,T,GOAL,SPREAD,MN,DF) takes these arguments,
% X - RxQ matrix of Q input vectors.
% T - SxQ matrix of Q target class vectors.
% GOAL - Mean squared error goal, default = 0.0.
% SPREAD - Spread of radial basis functions, default = 1.0.
% MN - Maximum number of neurons, default is Q.
% DF - Number of neurons to add between displays, default = 25.
㈢ 神经网络算法中,参数的设置或者调整,有什么方法可以采用
若果对你有帮助,请点赞。
神经网络的结构(例如2输入3隐节点1输出)建好后,一般就要求神经网络里的权值和阈值。现在一般求解权值和阈值,都是采用梯度下降之类的搜索算法(梯度下降法、牛顿法、列文伯格-马跨特法、狗腿法等等),这些算法会先初始化一个解,在这个解的基础上,确定一个搜索方向和一个移动步长(各种法算确定方向和步长的方法不同,也就使各种算法适用于解决不同的问题),使初始解根据这个方向和步长移动后,能使目标函数的输出(在神经网络中就是预测误差)下降。 然后将它更新为新的解,再继续寻找下一步的移动方向的步长,这样不断的迭代下去,目标函数(神经网络中的预测误差)也不断下降,最终就能找到一个解,使得目标函数(预测误差)比较小。
而在寻解过程中,步长太大,就会搜索得不仔细,可能跨过了优秀的解,而步长太小,又会使寻解过程进行得太慢。因此,步长设置适当非常重要。
学习率对原步长(在梯度下降法中就是梯度的长度)作调整,如果学习率lr = 0.1,那么梯度下降法中每次调整的步长就是0.1*梯度,
而在matlab神经网络工具箱里的lr,代表的是初始学习率。因为matlab工具箱为了在寻解不同阶段更智能的选择合适的步长,使用的是可变学习率,它会根据上一次解的调整对目标函数带来的效果来对学习率作调整,再根据学习率决定步长。
机制如下:
if newE2/E2 > maxE_inc %若果误差上升大于阈值
lr = lr * lr_dec; %则降低学习率
else
if newE2 < E2 %若果误差减少
lr = lr * lr_inc;%则增加学习率
end
详细的可以看《神经网络之家》nnetinfo里的《[重要]写自己的BP神经网络(traingd)》一文,里面是matlab神经网络工具箱梯度下降法的简化代码
若果对你有帮助,请点赞。
祝学习愉快
㈣ matlab神经网络工具箱问题
线性神经网络的构建:
net=newlin(PR,S,ID,LR)
PR--Rx2阶矩阵,R个输入元素的最小最大矩阵
S---输出层神经元个数
ID--输入延迟向量,默认值为[0]
IR--学习率,默认值为0.01
net = newlin([-1 1;-1 1],1); 表示设计的是一个双输入单输出线性神经网络
P = [1 2 2 3; 2 1 3 1];表示输入样本有四个,每一列就是一个输入样本
又比如假设我们期望的输出为 T=[1 2 3 4],则一个简单的神经网络如下:
>>net = newlin([-1 1;-1 1],1);%创建初始网络
P=[1 2 2 3; 2 1 3 1]%输入
T=[1 2 3 4]%期望的输出
net=newlind(P,T);%用输入和期望训练网络
Y=sim(net,P)%仿真,可以看到仿真结果Y和期望输出T的接近程度
P =
1 2 2 3
2 1 3 1
T =
1 2 3 4
Y =
0.8889 2.1667 3.0556 3.8889
楼主可以从《matlab神经网络与应用(第二版)》董长虹 开始入门神经网络的matlab实现
参考资料:《matlab神经网络与应用(第二版)》
㈤ 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……
㈥ MATLAB神经网络工具箱,用同样的数据、网络结构、初始参数,每次训练的结构都不一样
有一些边缘数据靠近网络分类边缘,会出现一些识别模糊的现象
㈦ BP神经网络工具箱process
每次训练,网络的初始权值都不同,因此BP算法的每次迭代、权值修正都不相同。可以认为每次训练都充满了随机性,这也是有时训练会陷入局部极小点,而有时并不会的原因。
performance就是指网络最后的性能,你之前设定的net.trainParam.goal=0.00001;就是这个指标。MATLAB训练时测试样本的输出误差达到这个设定值,训练就停止了。
以右边的值为准,中间框子里的值是不断变化的,当走到最右端时就达到了预设目标。
㈧ 一个关于BP神经网络的问题,matlab中神经网络工具箱的初始权值和阀值是
训练BP神经网络所采取的随机初始参数确实是随机的,在训练过程中这些参数和权值都会朝着同一个大方向进行修正。例如你用BP神经网络来拟合曲线,找到输入值与输出值之间的线性规律,那么在训练的过程中这个拟合的曲线会不断的调整其参数和权值直到满足几个预设条件之一时训练停止。虽然这个训练出来的结果有时候会有一定误差,但都在可以接受的范围内。
缩小误差的一个方法是需要预先设置初始参数,虽然每次依然会得到不一样的模型(只要参数是随机修正的),但不同模型之间的差距会很小。另外可以反复训练,找到一个自己觉得满意的模型(可以是测试通过率最高,可以是平均结果误差值最小)。
至于你说别人怎么检查你的论文结果,基本上都是通过你的算法来重建模型,而且还不一定都用matlab来做,即便是用同样的代码都会出现不同的结果,何况是不同的语言呢?其实验算结果最重要的是看测试时的通过率,例如在对一组新的数据进行测试(或预测)时,通过率达到95%,别人用其他的方式重建了你的模型也得到这样的通过率,那么你的算法就是可行的。注意,在计算机专业的论文里面大家看重的不是代码,而是算法。
补充一点:只要你训练好了一个神经网络可以把这个神经网络以struct形式保存,这样这个网络可以被反复使用,且每次对同一组测试数据的预测结果都会一样。你也可以当做是检测论文可行性的工具。
㈨ matlab 神经网络工具箱训练参数的调试问题
可以检查下网络的输入矩阵和期望输出矩阵,就是input 和target 。这两个矩阵的列数要一样。
㈩ MATLAB神经网络工具箱newff()函数相关问题,谢谢~~
newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)
PR -- R x 2 matrix of min and max values for R input elements
Si -- Size of ith layer, for Nl layers
TFi -- Transfer function of ith layer, default = 'tansig'
BTF -- Backpropagation network training function,
default = 'traingdx'
BLF -- Backpropagation weight/bias learning function,
default = 'learngdm'
PF -- Performance function, default = 'mse
答:【我这几天也在学习……】
1.是
2.是
3.是,[S1,S2...SN]代表隐含层和输出层的数目
4.是
个人建议去MATLAB中文论坛下载视频教程,很不错~看过后肯定有收获