2016/1/2

tensorflow 初學者筆記

身為一個 deep learning 的初學者所做的一些筆記。

建議可由 Google Brain 邱中鎮博士的投影片入門

http://www.slideshare.net/tw_dsconf/tensorflow-tutorial 這份投影片中最由價值的部份,是其對於 tensorflow 編寫的順序做了詳細的介紹; 這是你在官網中沒有辦法找到的詳細資料…

相對於傳統的統計學手法,例如:迴歸模型。 我們常常可以將資料與模型直接綁在一起;
例如:在R中要計算一個簡單的迴歸模型。

x <- rnorm(100)
y <- rnorm(100)
lm(y~x)

幾行就解決了,但是如果同樣的東西用 tensorflow 來處理的話: 可以參考這篇: https://github.com/yamitzky/tensorflow-practice/blob/master/Linear%20Regression%20by%20TensorFlow.ipynb
行數似乎增加了不少??
結合了邱博士的說明,我簡單將 tensorflow , 可以拆解為2個概念
  • 模型定義(modeling):抽象化,此階段完全是紙上談兵
    • 輸入項、輸出項的定義(tensorflow的術語叫:placehold)
    • 模型建構(隱藏層)
      • 定義 Variable (例:權重、誤差項)
      • 定義網路 (例:y = W*X+b)
    • 定義Loss函數
    • 最佳化:讓Loss函數最小化(Tensorflow 內建 Gradient Desecnt 等,可直接叫用)

  • 執行(session階段):戰爭期:計算資源投入(CPU/GPU)、實際資料投入
    • 要跑幾次去達成最佳化(Iterative Update)
    • 訓練資料讀入( feed)
讓模型定義更加抽象與獨立,是為了後續如果要建立不同模型時(例:3層模型變成30層)、定義不同的Loss函數、使用不同最佳化手法時,可以與原始資料完全隔離,不會受到影響
另外
參考連結:
地雷區:
  • tensorflow 目前對 python3 支援還不夠,例如圖示化的工具會有問題,請愛用python2進行學習

  • tensorflow 也提供了圖示化的方式,不過不建議初學者花太多時間在此;這個功能比較適合對於模型有完整瞭解後,要強化的情形;一般初學者,應該是先設定好自己的目標(想做的事),去找適合的模型(例:不要太多層的)、適合的資料、適合的LOSS函數、適合的最佳化手法,然後行有餘力把用到的數學都k一遍後,再去看圖示化的工具吧…

  • 日本網友測試如果在windows系統用docker搭建tensorflow, 只要遇上較大的資料集,就必定當機 … 想要學習的話,建議還是搭建個VM 或直接使用 Linux系統

2 則留言:

  1. 你好, 我有參加邱中鎮博士的seminar, 但只有短短4小時, 才疏學淺很多聽不懂. 我在想, 是不是有可能設計一個模型, 輸入為youtube影片, 輸出為TTS的lexicon或全成器, 自動產生出一種指定語言的接近真人發音TTS engine

    回覆刪除
  2. hi MAX 你可以參考台大 李宏毅老師的網路課程,會有比較詳細的解說;
    http://speech.ee.ntu.edu.tw/~tlkagk/courses.html
    邱博士的課程算是精簡的幫大家做介紹。另外如果不是資工系或是數學系的話,其實覺得困難是很正常的一件事;我聽懂的部份不到4成 :)

    另外你提的東西,目前 Youtube 有些影片有提供英文字幕生成應是類似原理 … 不過當天邱博士面臨很多未中譯的術語,中英夾雜… 也許會對於這類的辯識造成很大的挑戰吧 XD

    回覆刪除