神经网络的收敛和权重问题
三层网络,10个输入,6个隐含,2个输出,原程序如下:<br>p=';<br>t=';<br>net=newff(minmax(p),,{'logsig','logsig','logsig'},'trainlm')<br>net.trainParam.epochs=10000;<br>net.trainParam.goal=1e-5;<br>net.trainParam.show=50;<br>net.trainParam.lr=0.02;<br>net.trainParam.lr_inc=1.04;<br>net.trainParam.lr_dec=0.7;<br>net=train(net,p,t) <br>问题1:为何不收敛?是传递函数问题还是输入样本的问题?<br>
2:需要对T进行归一化处理吗?如何归一化?<br>
3:欲获得十个输入指标在输入样本中的权重值,即欲先得到如下结果:<br>
隐含层单元
输 入 层 单 元
输出层单元<br>1
2 3
4
5
6
7
8 9
10<br>1 0.8430.7920.0220.2160.8310.1030.7990.949 0.835<br>2
0.414 0.056 0.592 0.279 0.226 0.999 0.281
0.976 - 0.119<br>3
0.844 0.910 0.453 0.806 0.655 0.674 0.046 0.401 -
0.301<br>4 0.791 0.365 0.298 0.825
0.981 0.016 0.296 0.278 4.364<br>5
0.375 0.529 0.624 0.592 0.248 0.099 0.381
0.159 0.113<br>6
0.956 0.754 0.643 0.978 0.521 0.096 0.294
0.152 0.45 <br>
再通过相应的公式求得各输入指标中各神经元权重系数,请问通过什么命令可以实现?由于我的输出结果是两个指标,如何同时显示两个输出层单元的神经元权重系数?<br>
请版主和各位大侠帮忙。<br>
<br>
<br>
<br>
1.隐含层神经元数太少或者目标误差太小,或训练函数改为trainrp;<br>2.要归一化,<br>for i=1:2<br>t(i,:)=(t(i,:)-min(t(1,:)))/(max(t(1,:))-min(t(1,:)));<br>end
<HR>
<br>其实你目标函数归一化以后第一个问题就解决了。
[此贴子已经被作者于2006-3-20 12:16:18编辑过]
<P>3.net.iw{1}</P>
<P>ans =</P>
<P>Columns 1 through 8 </P>
<P> -7.7223 0.0761-13.4274-10.7298 -9.2905 -7.1288 -7.3501 -1.2151<BR> 5.7457 5.7912 -0.2446 1.9923 8.7049 -5.4917 7.5222 -1.1844<BR> -6.1592 -4.0895 2.9583 -3.5820 4.1414 -1.1677 -5.3087 -0.9751<BR> 6.4948 -2.9569 -0.5805 4.8782 3.7065 5.2725 2.4561 3.4636<BR> 0.2160 2.7347 0.9979 -5.8185 3.9658 -3.6653 -3.0706 -3.8463<BR> 6.0044 -0.1093 -5.5581 -6.7598 3.0519 -1.5270 -1.2021 -7.4134<BR> -0.5029 2.0670 -1.3826 -0.5567 3.6972 -2.9306 1.2939 -2.0448<BR> 0.6290 4.0209 2.8574 4.6071 -1.9534 4.4892 -8.6203 -6.9671<BR> -8.4123 -3.5283 -1.7248 -1.4303 -2.4048 -3.6906 -8.8747 -5.6814<BR> -2.2191 -3.2355 -1.9795 -3.5009 1.4925 1.7258 -4.2359 -4.5635</P>
<P>Columns 9 through 10 </P>
<P> -3.0650 -2.0109<BR> 2.3326 -8.5651<BR> 5.4185 0.6421<BR> 8.5712 3.6259<BR> 2.6303 1.2828<BR> -3.1021 -8.8550<BR> 1.0101 0.1241<BR> -0.1368 -7.6489<BR> -3.7087 2.1934<BR> 4.1976 1.1325</P>
为何不收敛
我刚作个神经网络的问题,你可以增加第二层的神经元,试验一下,可能会收敛。建议你在输入和输出数据归一后再做。 net=newff(minmax(p),,{'logsig','logsig','logsig'},'trainlm')<BR>三成网络 是三个logsig 吗 我怎么觉得应该是两个啊 大家说说啊 这个例子是一个隐含层还是两个隐含层啊神经网络隐层数的确定
一般所说的三层网络包含输入层、中间层和输出层。输入层和中间层也称为隐层。隐层通常用logsig作为传递函数,输出层通常用purelin作为传递函数。你所举的这个例子应是两个隐层。回复:(binghe79)net=newff(minmax(p),[10,6,2],{'l...
<DIV class=quote><B>以下是引用<I>binghe79</I>在2006-3-23 11:02:28的发言:</B><BR>net=newff(minmax(p),,{'logsig','logsig','logsig'},'trainlm')<BR>三成网络 是三个logsig 吗 我怎么觉得应该是两个啊 大家说说啊 这个例子是一个隐含层还是两个隐含层啊</DIV><P>net=newff(minmax(p),,{'logsig','logsig','logsig'},'trainlm')<BR>=net=newff(minmax(p),,{'logsig','logsig'},'trainlm')同样是三层网络,输入层是默认的<BR></P>
页:
[1]