2013-10-02 89 views
2

我嘗試使用hopfield編寫神經網絡進行模式識別。我使用Introduction to Neural Networks for C#, Second Edition書中的說明,但我不使用他的.dll文件並自己編寫所有類。模式識別Hopfield

傑夫·希頓在他的書中說,與的Hopfield訓練神經網絡,我們應該接收輸入模式(以矩陣形式),然後做3個步驟:

1 - 轉換二進制輸入到雙極(0 - > (-1),1 - > 1)

2-轉換矩陣輸入到行矩陣(保存爲M2),然後它的轉置(保存爲M1),並且在他們以後乘(M3 = M1 * M2)

3加重矩陣(WeightMatrix + = M3)

我的問題是關於步驟2 ! 當我將我的8X8矩陣行矩陣與下面的代碼:

 int count = 0; 
     int[] RowMatrix = new int[64]; 
     for(int j=0; j<8;j++) 
      for (int i = 0; i < 8; i++) 
      { 
       RowMatrix[count] = PatternBipolar[i, j]; 
       count++; 
      } 

(PatternBipolar輸入模式的轉換爲雙極) 我們有1X64矩陣,當它轉我們列的矩陣64X1。因此,如果我們將它們相乘(ColumnMatrix * RowMatrix如書中所述),我們就有64X64矩陣!

但我們的權重矩陣是8X8(因爲我們只有64個神經元而不是64 * 64 = 4096 !!!神經元)。

所以我很困惑,需要help.pleas幫助我解決這個問題和關於這個矩陣。 .

我收到輸入矩陣與下面的表格,並使用Windows窗體:

enter image description here

+3

嗨普利亞。你是否打算調用變量名'count'?就你所知,你現在所擁有的變量名稱意味着某些特別的英語中的「與編程無關」。 –

+0

嗨克里斯。謝謝你的提示! –

回答

1

最後,我發現我的答案!

在Hopfield網絡中,當我們在我們的網絡中使用n個神經元時,我們需要nXn權重矩陣。我們只需要將來自輸入的行矩陣乘以它的逆。然後在權重矩陣中我們有每個矩陣和其他矩陣之間的關係。