2

我一直在玩這個在線演示的瀏覽器內https://cs.stanford.edu/people/karpathy/convnetjs/demo/image_regression.html,我一直在努力使圖像與文字(與「狐狸說什麼...」標題)顯示更清晰(與可讀的文字)無濟於事。過度裝配神經網絡的最佳方法是什麼?

該神經網絡接收兩個輸入 - 一個像素的X和Y位置和三個輸出 - 所述像素的RGB通道。網絡由選定的圖片進行訓練,然後嘗試「繪製」它。

我想訓練這個網絡的方式,使每個像素匹配儘可能接近原始圖像,即使其過度使用。這怎麼能實現?應該使用什麼組合或參數?也許網絡的結構需要不同(更多層,更多層中的神經元,不同類型的層等)?

我試着學習速度播放,無需改變原有的結構,但即使在400K迭代大部分文字都是沒有區別:

screenshot after 400k iterations

難道僅僅是一個時間問題和也許經過幾百萬次的迭代後會達到預期的結果?它可以以某種方式加速(不增加處理能力和其他明顯的東西)?

看來,讓它每次都爲同樣的輸入返回相同的值應該是一件非常簡單的任務 - 網絡正在接受數十萬次的完全相同的數據訓練,爲什麼它仍然會返回那麼多灰色像素?

我是新來的神經網絡,所以也許這是一個愚蠢的問題,神經網絡根本無法使用。

+0

你試過語義分割嗎? –

+0

不能。你能告訴我怎麼用這個特定的JS庫來完成它嗎? –

+0

我不知道這個JS庫,但我用Caffe中的圖像語義分割。 –

回答

4

這將是很難過度裝備這樣的網絡,因爲它只是從2D的迴歸器,所以你需要建模非常「顛簸」的表面。你需要的是很多隱藏的單位 - 這是什麼讓你有能力過度裝備。

這只是一個時間問題,也許經過幾百萬次迭代後,會達到預期的效果?

不,網絡實際上可能具有太小的容量來表示問題。

是否可以在某種程度上加速(不增加處理能力等明顯的東西)?

是的,不要使用.js(也很明顯,但這應該是基於web的例子,而不是有效的技術)。

似乎讓它每次都爲相同的輸入返回相同的值應該是一件非常簡單的任務 - 網絡在數千次的完全相同的數據上訓練,爲什麼它仍然返回這麼多灰色像素?

爲什麼很難?神經網絡是不是應該輕易過度配合?他們很容易爲高維問題,其中您的數據點很容易使用超平面組合(這是神經網絡的構建塊)分開。在這裏,您正在使用2D,非常低維,非常密集的數據,這是遠離典型的NN方法。如果你想讓它輕鬆地學習圖像,你應該將圖像作爲輸入,整個圖像。在這裏,相反,每個像素是一個輸入,這使得學習過程對於NN來說相對困難。

+0

感謝您的詳細解答。那麼,用這個JS庫和類似的網絡設置(1個像素作爲輸入)沒有辦法做到這一點?你說過很多隱藏的輸入可以提供幫助,關於確切數字的任何想法? –