2012-03-27 41 views
1

我正在學習Encog(版本3.0和3.1 for Java)神經網絡框架,並且想在我的神經網絡訓練中嘗試使用Levenberg-Marquardt算法。然而,我的實際神經網絡是非常複雜的自然(具有數百個輸入神經元)並且沒有一個(我已經從數萬個簡化到136個)網絡似乎可以用Levenberg-Marquardt訓練(說沒有足夠的內存,而我將2個GiB專用於JVM)。但是當我用簡單的(只有3個輸入神經元)網絡嘗試一個簡單的綜合任務時,它表現的非常好。如何估算需要使用的RAM的數量Encog通過使用Levenberg-Marquardt算法對特定樣本集進行訓練?

問題是我該如何估計它將花費的內存量以及用Levenberg-Marquardt算法對特定樣本集進行訓練的特定網絡?我怎麼能猜到什麼是2 GiBs(實際的機器有4,但JVM似乎不能分配超過2)適合的最大複雜性?

+1

您有大約90個問題沒有被接受的答案。也許你可以回顧一下你之前給出的一些答案。 – 2012-03-27 07:09:55

+1

我猜想它是來自維基百科頁面的O(N * K + N * N)(http://en.wikipedia.org/wiki/Levenberg%E2%80%93Marquardt_algorithm)。其中N是訓練實例的數量,K是權重的數量。由於LMA在O(N ** 3)中,所以在訓練大量數據集時通常應該更多地考慮時間複雜性。這對於簡單的問題很好,但是當你將ANN應用於大規模問題時,你應該更喜歡隨機梯度下降或共軛梯度。 – alfa 2012-03-27 08:29:07

回答

5

我會嘗試一個小尺寸,確定它使用多少內存,並保持加倍的大小,直到你看到一個模式。即它是線性的還是超線性的。

順便說一句:我的電視有4 GB的內存,如果需要的話,或許是時候獲得更多的內存。 ;)

+0

謝謝你,上尉明顯! – Ivan 2012-03-27 07:19:33

相關問題