使用人工神經網絡完成手寫數字識别任務。具體要求如下:
(1)batch_size和step_num自定義,把loss值列印出來。
(2)神經網絡的層數、節點數目、激活函數自定義。(記錄心得)
(3)使用tensorboard把計算圖顯示出來。
一、初始資料如下:
batch_size=64
lr = 0.01 #學習率
step_num = 6000 #計算6000次
計算的神經元層數是3層
使用的是随機梯度下降算法 tf.train.GradientDescentOptimizer()
計算出來的準确度為:0.717
二、參數調優過程資料如下:
1、調參資料:初次嘗試參數改為如下batch_size=640 ,step_num=6000 ,計算層
數是3層,使用的反向傳播算法是GradientDescentOptimizer(),收斂的比較慢,最
終訓練出來的準确度為71.72%,接着改參數。
2、調參資料:base_size=640 ,step_num=6000,計算層數還是3層,使用的反向
傳播算法是AdamOptimizer, 最後得到損失函數是0.0003的時候,準确度非常穩定
的保持在0.958附近最終準确度可收斂到95.88%
3、調參資料:base_size=640 ,step_num=6000,修改計算層數數值,
計算6層,使用的反向傳播算法是AdamOptimizer, 準确度隻能達到0.9468%,
在此次調優過程中發現修改層數對最終的準确度不會提升,反而還下降了1%
4、調參資料:base_size=640,step_num=12000,修改計算層數數值, 計算6層,
使用的反向傳播算法是AdamOptimizer,最好結果是損失函數0.15 的時候,可收斂
到96%
三、計算圖如下:
1、打開terminal輸入 D:\tensorflow> tensorboard logdir D:\AI\work2.py
2、在谷歌浏覽器輸入:http://127.0.0.1:6006
3、顯示如下圖:
四、結論:
1、發現在調參過程當中起重大作用的還是選擇了AdamOptimizer這個優化器,在一
開始訓練的時候就可以快速的進行收斂并且在訓練過程中,準确度的遞增是比較均勻
的,沒有出現較大的偏差的波動。
2、相對來說改動batch_size和增加神經元的層數對此次的神經網絡的訓練的效果和
作用不是很大。
3、改動學習率對此次神經網絡的訓練效果作用也不是很大。
4、在此次調優過程中step_num如果超過12000反而會出現準确率下降的現 象,會
出現過拟合的情況,測試結果step_num在6000到12000之間會比較合理。