1. 程式人生 > >UFLDL向量化程式設計練習:用MNIST資料集的稀疏自編碼器訓練實現

UFLDL向量化程式設計練習:用MNIST資料集的稀疏自編碼器訓練實現

     折騰了兩天,總算實現了用MNIST資料集的稀疏自編碼器訓練。發現了以下問題:

     1,matlab程式設計所寫程式碼不能太奢侈。定義變數時要儘量節省記憶體資源,向量能解決的不要用方陣,int8型別能解決的不要用雙精度數;

     2,UFLDL提供的minFunc函式有問題,樣本數再少都會溢位,換為第一單元建議的另外一個函式,fminlbgs.m可以避免記憶體溢位問題,而且用隨機選取的10000個手寫數字訓練能得到正確結果(與網站提供圖片一致)。

    3,優化過程中真正的記憶體消耗,大頭不是樣本數,而是引數個數。10000個樣本,雙精度數時佔記憶體不過60多兆,而30萬個引數,保留幾個副本,普通機器真是相形見拙,令人灰心。不過從中悟出一些道理,也算值了。

    4,我把用MNIST資料集訓練稀疏自編碼器程式打包上傳,希望能對感興趣的人有所幫助。