声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1906|回复: 6

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

[复制链接]
发表于 2006-3-20 00:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
三层网络,10个输入,6个隐含,2个输出,原程序如下:<br>p=[0.7,0.3,0.9,0.7,0.34,0.5,0.7,0.65,0.7,0.7;...<br> 0.5,0.1,0.1,0.5,0.46,0.7,0.1,0.10,0.1,0.1;...<br> 0.5,0.1,0.1,0.5,0.18,0.5,0.1,0.10,0.1,0.1;...<br> 0.7,0.7,0.5,0.7,0.30,0.7,0.9,0.65,0.1,0.7;...<br> 0.9,0.1,0.5,0.9,0.46,0.1,0.7,0.90,0.1,0.5;...<br> 0.5,0.7,0.5,0.5,0.26,0.5,0.3,0.10,0.1,0.5;...<br> 0.7,0.7,0.9,0.9,0.22,0.7,0.7,0.10,0.1,0.5;...<br> 0.7,0.1,0.1,0.7,0.78,0.3,0.1,0.10,0.3,0.1;...<br> 0.7,0.1,0.7,0.1,0.22,0.3,0.1,0.10,0.1,0.9;...<br> 0.7,0.1,0.7,0.7,0.18,0.9,0.1,0.10,0.1,0.9;...<br> 0.7,0.7,0.7,0.9,0.38,0.9,0.9,0.65,0.1,0.7;...<br> 0.5,0.3,0.1,0.7,0.50,0.1,0.7,0.65,0.1,0.9;...<br> 0.5,0.3,0.5,0.7,0.26,0.3,0.7,0.65,0.3,0.7;...<br> 0.9,0.3,0.7,0.9,0.46,0.7,0.9,0.90,0.1,0.7;...<br> 0.7,0.3,0.7,0.9,0.90,0.9,0.9,0.90,0.1,0.1;...<br> 0.7,0.5,0.7,0.9,0.70,0.7,0.7,0.10,0.1,0.1;...<br> 0.3,0.3,0.3,0.5,0.70,0.3,0.1,0.10,0.1,0.1;...<br> 0.7,0.3,0.9,0.9,0.38,0.5,0.7,0.10,0.1,0.1;...<br> 0.9,0.3,0.5,0.7,0.90,0.7,0.9,0.90,0.1,0.1;...<br> 0.7,0.5,0.3,0.7,0.58,0.5,0.9,0.90,0.1,0.1]';<br>t=[0.85,0;1.10,1;1.36,1;0.94,0;0.75,0;1.57,1;0.87,0;1.45,1;1.78,1;1.38,1;0.91,0;1.35,1;...<br>1.04,1;0.78,0;0.75,0;0.97,0;2.1,1;0.95,0;0.90,0;0.94,0]';<br>net=newff(minmax(p),[10,6,2],{'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.843  0.792  0.022  0.216  0.831  0.103  0.799  0.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>

                       
回复
分享到:

使用道具 举报

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

发表于 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>
发表于 2006-3-20 16:48 | 显示全部楼层

为何不收敛

我刚作个神经网络的问题,你可以增加第二层的神经元,试验一下,可能会收敛。建议你在输入和输出数据归一后再做。
发表于 2006-3-23 11:02 | 显示全部楼层
net=newff(minmax(p),[10,6,2],{'logsig','logsig','logsig'},'trainlm')<BR>三成网络 是三个logsig 吗 我怎么觉得应该是两个啊 大家说说啊 这个例子是一个隐含层还是两个隐含层啊
发表于 2006-3-27 20:10 | 显示全部楼层

神经网络隐层数的确定

一般所说的三层网络包含输入层、中间层和输出层。输入层和中间层也称为隐层。隐层通常用logsig作为传递函数,输出层通常用purelin作为传递函数。你所举的这个例子应是两个隐层。
发表于 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),[10,6,2],{'logsig','logsig','logsig'},'trainlm')<BR>三成网络 是三个logsig 吗 我怎么觉得应该是两个啊 大家说说啊 这个例子是一个隐含层还是两个隐含层啊</DIV>
<P>net=newff(minmax(p),[10,6,2],{'logsig','logsig','logsig'},'trainlm')<BR>=net=newff(minmax(p),[6,2],{'logsig','logsig'},'trainlm')同样是三层网络,输入层是默认的<BR></P>
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-26 03:26 , Processed in 0.071433 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表