iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
0
AI & Data

AI從入門到放棄系列 第 8

Day 08 ~ AI從入門到放棄 - 訓練模型

  • 分享至 

  • xImage
  •  

接續之前的內容,今天要來訓練昨天搭建好的模型,將圖跟標籤送進去,我們從訓練集裡分出0.1即10%的資料當作驗證集,之後會討論到為何使用驗證集,參與訓練的圖片剩餘54000張,每32張就更新一次,稱作一輪,跑完20輪,我們會對隨機的初始權重進行54000/32X20=33760次的更新。

這裡使用小批量梯度下降,可以加速收斂,每讀取32張圖片就更新一次權重,我們使用的方法折衷兼顧了速度跟穩定,讀完所有圖片才更新一次權重,需要花相當多的時間跑非常多輪,也不建議讀取一張圖片就更新一次權重,只參考一張圖片就更新不穩定,容易受到極端值的影響,且更花時間,僅跑一輪我們就得把50240個權重更新54000次。

model.fit(
  x = x_train,
  y = y_train,
  batch_size = 32,
  epochs = 20,
  validation_split = 0.1,
  verbose = 2
)

訓練經過一定的輪數後,你可能會發現訓練集的loss跟accuracy在上下跳動,參照資料的預處理篇看到的圖,模型並不會比筆直朝低處去,也不會在低處停下,而是圍繞的低點打轉,把批大小從32改成圖片集的數量54000,你便可以看到數值穩定下降,但是你必須把epochs改得相當大,這也驗證了前面所說的內容。

訓練完成之後可以先保存模型,之後有需要用的時候就可以直接載入。

model.save('mnist_model.h5')

接著查看模型在測試集上的表現。

score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])

上一篇
Day 07 ~ AI從入門到放棄 - 模型的搭建
下一篇
Day 09 ~ AI從入門到放棄 - 檢視初步成果
系列文
AI從入門到放棄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言