iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 5
3
AI & Data

英雄集結:深度學習的魔法使們系列 第 5

[實戰系列] 使用 TensorFlow 搭建一個 ANN 魔法陣(模型)

有了先前的 ANN 魔法陣教學後,該是來讓各位見習魔法使實戰演練了,前情提要請參見:

[魔法陣系列] Artificial Neural Network (ANN) 之術式解析

[魔法陣系列] Artificial Neural Network (ANN) 之術式啟動

本文使用 TensorFlow 搭建、運行 ANN 模型,並分享 TensorBoard 給大家,它是 TensorFlow 的視覺化工具,對於呈現複雜的 NN 模型訓練是有幫助的。

莉森的喃喃:身為視覺取向的人,若搭配動畫或圖片會更加記憶深刻,你們也是嗎~?

  • 執行的環境版本:

    • Python 3.6.4
    • TensorFlow 1.11.0
    • TensorBoard 1.11.0
  • 無腦安裝法:

    • 下載 Anaconda Distribution,我本身使用 mac 所以下載 macOS Installer,不同作業系統的同學們請自行選擇合適的下載。

    • 打開 terminal,安裝 TensorBoard 與 TensorFlow:

      conda install tensorboard -y
      conda install tensorflow -y
      
    • 確認 TensorFlow 是否成功安裝:

      # 進入Python shell
      import tensorflow as tf
      tf.__version__
      from tensorboard import version; print(version.VERSION)
      

Build a ANN model

程式碼使用 TensorFlow 官方提供的 tutorial 為範例,僅摘要出重點部分,建議大家去跑一遍~完整版的 Code 請點此

MNIST 資料集

MNIST 是一個廣泛被運用在測試新技術或演算法的資料集,由 28x28 尺寸的手寫數字且帶有標籤(label)的圖片所組成。
https://ithelp.ithome.com.tw/upload/images/20181019/20112540xY9iTW8W1d.png

圖片來源:https://en.wikipedia.org/wiki/MNIST_database

ANN 模型架構

  • 一層輸入層 --> 一層隱藏層(500 個神經元) --> dropout --> 一層輸出層(10 個神經元)

    dropout 這邊有提到,不要害怕這個陌生的東西~

  • 激活函數(activation function):ReLU

  • 代價函數(cost function):softmax_cross_entropy_with_logits

    • softmax 是求輸出屬於哪一類的機率
    • cross_entropy 指兩個機率分布之間的距離
  • 優化器(Optimizer):AdamOptimizer這裡有對不同的Optimizer做介紹)

TensorBoard 功能

這個官方範例展示了每個 TensorBoard 的功能,常用的方法如下:

  • tf.name_scope(<scope_name>):主要用於管理一個 Graph 裡面的各種操作,返回的是一個以 scope_name 命名的 context manager,以便它們在 TensorBoard 中有意義地分組。
  • tf.summary.scalar()tf.summary.histogram():利用這兩個方法紀錄訓練過程,之後可在 TensorBoard 中的 ScalarsHistograms 頁籤檢視。
  • tf.summary.merge_all() 記得最後要將所有想顯示在 tensorboard 的資料整合
  • tf.summary.FileWriter(PATH, sess.graph) 將整合好的資料寫入log檔

運行官網的程式後,點開 TensorBoard 就可以看到趨勢變化嚕,截幾張圖給你們,還是老話一句,強烈推薦大家可以從安裝環境開始動手演練一遍,TensorBoard 平台有一些互動式操作在那默默等著你們光臨。

  • ANN 的 Graph
    https://ithelp.ithome.com.tw/upload/images/20181019/20112540Q2SOteMCR7.png

  • 訓練的迭代過程
    https://ithelp.ithome.com.tw/upload/images/20181019/20112540VWzshNUrSl.png

  • 輸入的資料長相
    https://ithelp.ithome.com.tw/upload/images/20181019/20112540Tqg5obmG2r.png


最後,介紹一個優秀的視覺化的 tensorflow 網站,提供使用者在上面測定參數,觀看神經網絡訓練的過程變化。

莉森的喃喃:週五夜晚打文章好累啊,如果文章中有疏漏請留言告訴我,謝謝點進來閱讀的你們唷!


上一篇
[魔法陣系列] Artificial Neural Network (ANN) 之術式啟動
下一篇
[精進魔法] Regularization:減少 Overfitting ,提高模型泛化能力
系列文
英雄集結:深度學習的魔法使們31

尚未有邦友留言

立即登入留言