我正在學習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)適合的最大複雜性?
您有大約90個問題沒有被接受的答案。也許你可以回顧一下你之前給出的一些答案。 – 2012-03-27 07:09:55
我猜想它是來自維基百科頁面的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