2014-02-19 86 views
0

我正在訓練一個神經網絡來預測輸出。 我有一個名爲testX的測試集,它是一個4x13矩陣,神經元的數量是10,名爲forecastOutput的預期輸出是1x13矩陣。另外,net.IW {1}是一個10x4矩陣,net.b {1}是一個10x1矩陣。 enter image description hereMatlab中神經網絡的矩陣尺寸問題

而不是使用SIM功能,我在Matlab中嘗試以下代碼來預測輸出。

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

但是,在矩陣維上有一個錯誤。如何使用這些代碼獲得1x13矩陣的輸出?

謝謝。

+0

檢查不同的尺寸。 'size(net.IW {1})','size(net.b {1})'等。請用這個信息更新問題。 –

+0

@Robert P我用最初的權重和偏差維度更新了我的問題。 – Ping

回答

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在數學上不是一個有效的表達式。如果你想通過BA添加的每一列,你可以這樣做:

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

如果你想補充一點的AB第k列接收向量,你可以這樣做:

C = A(:,k) + B % k = 1 gives the following result 
C = 
    2 
    6 
    10 

我想你在下一個表達式中有同樣的問題(我假設size(net.IW{1}) == size(net.IW{2}))。

我不知道哪一種方法可以給你想要的結果,但是這會解決你的錯誤,並且應該讓你順利。