Matlab中神经网络矩阵维数问题

时间:2014-02-19 16:34:26

标签: matlab neural-network

我正在训练神经网络来预测输出。 我有一个名为testX的测试集,它是一个4x13矩阵,神经元的数量是10,名为forecastOutput的预期输出是1x13矩阵。此外,net.IW {1}是10x4矩阵,net.b {1}是10x1矩阵。 enter image description here

我没有使用sim函数,而是在Matlab中尝试了以下代码来预测输出。

y = logsig(net.IW{1} * testX + net.b{1});
forecastOutput = purelin(net.LW{2} * y + net.b{2}); 

但是,矩阵尺寸存在错误。如何使用这些代码获得1x13矩阵的输出?

谢谢。

1 个答案:

答案 0 :(得分:0)

问题在于y = logsig(net.IW{1} * testX + net.b{1});中的尺寸不匹配。

您要在此处尝试添加向量(net.b{1}和矩阵net.IW{1})。请考虑以下事项:

A =
   1   2   3
   4   5   6
   7   8   9

B =
   1
   2
   3
数学上,

C = A + B不是有效的表达式。如果您希望A添加B中的每一列,您可以执行以下操作:

C = bsxfun(@plus,A,B)   % Or C = A + repmat(B, 1, size(A,2))
C =
    2    3    4
    6    7    8
   10   11   12

如果您只想添加A的{​​{1}}的第k列来接收矢量,您可以这样做:

B

我猜你在下一个表达式中有同样的问题(我假设C = A(:,k) + B % k = 1 gives the following result C = 2 6 10 )。

我不知道哪种方法可以为您提供所需的结果,但这样可以解决您的错误,并且可以帮助您解决问题。