天天看點

基于TensorFlow架構實作人工神經網絡完成手寫數字識别任務【多測師】

使用人工神經網絡完成手寫數字識别任務。具體要求如下:
(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%

基于TensorFlow架構實作人工神經網絡完成手寫數字識别任務【多測師】
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、顯示如下圖:

基于TensorFlow架構實作人工神經網絡完成手寫數字識别任務【多測師】
四、結論:
1、發現在調參過程當中起重大作用的還是選擇了AdamOptimizer這個優化器,在一
開始訓練的時候就可以快速的進行收斂并且在訓練過程中,準确度的遞增是比較均勻
的,沒有出現較大的偏差的波動。
2、相對來說改動batch_size和增加神經元的層數對此次的神經網絡的訓練的效果和
作用不是很大。
3、改動學習率對此次神經網絡的訓練效果作用也不是很大。
4、在此次調優過程中step_num如果超過12000反而會出現準确率下降的現 象,會
出現過拟合的情況,測試結果step_num在6000到12000之間會比較合理。      

繼續閱讀