2012-09-05 185 views
0

我在Tom Mitchell的「機器學習入門」一書中讀到了一個項目的想法。該項目是關於確定臉部的方向(左,右,下,直)。我使用自己開發的神經網絡,它可以正常工作(用XOR,拋物線函數進行測試......),但無法對它進行足夠的訓練以確定它們是否正確。我得到的最好情況是43%正確,這是相當低的。神經網絡訓練不夠好

這裏是項目的描述:

圖像32×30,灰度(I使用13人×32幅圖像進行訓練樣例和4口人×32幅圖像進行測試)。

神經網絡:3層 - 輸入,隱藏輸出

32×30輸入單元

3隱藏單元,使用S形作爲一個傳遞函數

1輸出單元,使用線性作爲轉換功能。

OUT:0.2 = left; 0.4 =下; 0.6 =正確; 0.8直

學習率=動量= 0.3

重量和偏壓設置爲隨機的小的值。

經過25000次迭代後,我仍然只有〜40%的正確率。在這本書中,他們設法獲得了90%的精確度!

任何想法?

+0

您是否使用向後傳播來調整權重?是否發佈發佈您使用的代碼? –

+3

我猜3個隱藏單位是不夠的。隱藏層將信號從輸入層轉換爲輸出層,3個單元僅表示描述圖像的3個變量。還請澄清一下:「我使用13x32圖像進行訓練,4x32進行測試」。你的意思是說你使用不同大小的圖像?如果不是,這些數字是什麼意思?最後一個問題:在書中提出使用浮點數(0.2 = left,0.4 = down),或者它是你自己的想法? – ffriend

+0

13人*每人32張圖片用於訓練示例 4人*每人32張圖片用於測試 32張圖片=剩餘8張; 8對; 8連敗; 8 down 有些人戴着眼鏡 –

回答

1

在@ffriend的評論之後,一切都像魅力一樣。我使用了4個輸出神經元,準確度達到了90%以上。如果我在隱藏層中使用更多的神經元,錯誤會變得更小,但程序需要更多時間來運行網絡並反向傳播。