2013-05-04 64 views
0

最近我發佈了許多關於我正在製作的字符識別程序的問題。直到今天,我還以爲自己的工作很完整。我認爲這與我對網絡的培訓有關。接下來是我如何看待訓練和模擬程序的解釋。混淆神經網絡的輸入和目標

給這兩個圖像

目標

enter image description here

輸入

enter image description here

我想訓練網絡識別字母D.注意,在此之前完成,我已經將圖像處理成二進制矩陣。我使用的培訓

[net,tr] = train(net,inputs,targets); 

其中代替輸入我是目標,因爲我想訓練網絡以識別目標圖像中的所有字母。

我然後運行

outputs = sim(net,inputs); 

其中輸入是圖像以字母「d」,或圖像與任何其他字母就是在ABCD。這裏的基本前提是我想訓練網絡以識別ABCD中的所有字母,然後選擇任何字母A,B,C或D,並查看網絡是否識別該選定的字母。

問題:

我正確的訓練程序嗎?

回答

0

那麼它很大程度上取決於你如何實現你的神經網絡。雖然關於你問的問題,我猜你沒有自己實現它,但使用了一些現成的API。

無論如何,你應該先了解你使用它們之前使用的工具(這裏是神經網絡)。

神經網絡接收輸入並執行輸入的線性或非線性變換並返回輸出。

輸入和輸出總是數字值。但是它們可能代表任何類型的數據。

輸入可以是:

  • 像素的圖像的
  • 實值或屬性整數
  • 分類

在你的情況下,輸入是所述像素你的角色圖像(你的二進制矩陣)。

輸出可以是:

  • 類(如果你正在做分類)
  • 值在時間序列上(如果你正在做迴歸)
  • 下一個值(如果你正在做時間序列預測)

在你的情況下,你正在做分類(預測輸入代表哪個字符),所以你的輸出是一個類。

爲了瞭解網絡是如何訓練的,我將首先解釋如何在訓練階段使用它,然後解釋訓練階段的含義。因此,一旦你訓練了你的網絡,你就會給它代表你的圖像的二進制矩陣,它將輸出將是(例如)的類(字符):0代表A,1代表B,2爲D. C和3換句話說,您有:

  • 輸入:二進制矩陣(圖像)
  • 輸出: 0,1,2或3(取決於哪個字符的網絡在圖像中識別)

訓練階段在於告知網絡每個輸入您想要的輸出。

訓練階段使用的數據類型與「預測階段」中使用的數據類型相同。因此,對於在訓練階段:

  • 輸入:二進制矩陣[A,B,C,d] (每個字母非常重要!)
  • 目標:對應類[ 0,1,2,3]

這樣,你告訴網絡學習如果你給它的A圖像它應該輸出0,如果你給它的B圖像它應該輸出1,等等。

注意:由於您認爲「輸入」是您想要在訓練階段後給網絡的輸入,當他們實際上是在訓練階段給予網絡的輸入時,您錯了。

+0

它從錯誤消息看起來像你應該實際上給單元陣列中的網絡輸入和目標。如果X和T是你的單元陣列,那麼每個單元格X {i}(i in [1,4])是一個二進制形式的字母(1×100矩陣),每個單元格T {i}(i in [1,4])是包含0,1,2或3的單獨矩陣。這種方式應該可以工作並且尺寸應該匹配。 – Dolma 2013-05-05 22:53:15

+0

我仍然收到錯誤@Dolma。我將我的輸入矩陣轉換爲單元矩陣,以便它是4x100單元。我的目標數據是target = [{0},{1},{2},{3}]。我仍然得到同樣的錯誤。我試着讓目標成爲一列單元格。 – roldy 2013-05-05 23:38:58

+0

沒有輸入必須是1x4單元陣列。每個單元格都是1x100矩陣。目標也是1x4單元陣列,每個單元都是1x1矩陣(這就是你所做的)。 – Dolma 2013-05-05 23:49:46