net.IW{1,1} must be a 5-by-31 matrix.

错误:net.IW{1,1} must be a 5-by-31 matrix.

前情提要:在利用MATLAB做BP神经网络时,因为每次都是随机生成权值和阈值,导致每次的运行结果都不一样。所以萌发了自己固定权值和阈值的想法。但是在实际的运行过程中老是报这个错误。所以题主现在对整个过程做一个整理。

建立的神经网络结构为3层,输入层36个神经元,隐层5个神经元、输出层1个神经元
那么net.iw是什么意思呢?
net.iw的意思是神经网络的权重矩阵。注意,net.iw是一个细胞矩阵
那什么又是细胞矩阵呢?
细胞矩阵的意思就是矩阵中的每一个元素都是单独的一个矩阵,简而言之,细胞矩阵就是装矩阵的矩阵。
那继续说net.iw,net.iw是细胞矩阵,那其中有多少个矩阵呢?这是由你的网络层数和网络输入个数决定的。它的大小为NI*Ni,Nl是网络层数(net.numLayers),Ni是网络输入个数(net.numInputs)。

*net.iw{1,1}的大小应该是5 X 36。

但是matlab报错net.IW{1,1} must be a 5-by-31 matrix. 我反复看了几遍代码矩阵的转换这些,不知道哪里出了问题。最后和另外一段程序(采用相同数据集)中的net.iw{1,1}的大小做对比,发现也是5-by-31,恍然大明白了。

我开始怀疑是 我用的数据集的锅,于是经过观察发现,我用的数据集中的数据重复度很高,并不是说有的样本数据完全相同,就是有很多相同项。抱着找着这个问题根源的态度,我将保存了副本的数据集开始修改同类项,果然就没报错了。

总结一下,明白是为什么错误,实际上并没有解决意义。归根结底为什么会报这样的错,估计要去看一下源码了,这个就交给大佬去完成吧。
萌新,欢迎指正。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值