cccttt 发表于 2006-3-20 00:23

神经网络的收敛和权重问题

三层网络,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>

                       

ericlin 发表于 2006-3-20 12:07

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编辑过]

ericlin 发表于 2006-3-20 12: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>

chenbing 发表于 2006-3-20 16:48

为何不收敛

我刚作个神经网络的问题,你可以增加第二层的神经元,试验一下,可能会收敛。建议你在输入和输出数据归一后再做。

binghe79 发表于 2006-3-23 11:02

net=newff(minmax(p),,{'logsig','logsig','logsig'},'trainlm')<BR>三成网络 是三个logsig 吗 我怎么觉得应该是两个啊 大家说说啊 这个例子是一个隐含层还是两个隐含层啊

miniducky 发表于 2006-3-27 20:10

神经网络隐层数的确定

一般所说的三层网络包含输入层、中间层和输出层。输入层和中间层也称为隐层。隐层通常用logsig作为传递函数,输出层通常用purelin作为传递函数。你所举的这个例子应是两个隐层。

ericlin 发表于 2006-3-29 15:35

回复:(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]
查看完整版本: 神经网络的收敛和权重问题