iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 28
0
Google Developers Machine Learning

Machine Learning with TensorFlow on Google Cloud Platform系列 第 28

鐵人賽Day28 - Art and Science of Machine Learning (6/6)

客製化 Estimator

主旨:了解如何撰寫客製化 Estimator

今天我們將講到:

  • 撰寫客製化 Estimator
  • 控制 model functions
  • 將 Keras 模型結合進 Estimator

客製化 Estimator

使用 TensorFlow 中的 estimator API 有著許多好處如:

  • 快速建模
  • 儲存檢查點(Checkpointing)
  • 超過記憶體容量的資料處理
  • 訓練、評估、監測
  • 分散式訓練
  • 在 AI Cloud Engine 做超參數調整
  • 量產:使用訓練好的模型做預測服務

而客製化 estimator 的方式就是在 model_fn 上使用自定義的 model function:

下面的 myfunc() 是一個例子,使用了自己定義的模型 model_from_research_paper() ,這邊要注意的是 myfunc() 的輸入參數必須要依序是 (features, targets, mode)

而其中 mode 這個參數是來判斷 estimator 的模式,不同的模式會有不同的步驟,例如說訓練和評估的時候需要計算損失和評估衡量,但是預測的時候就不需要了:

Keras

Keras 是一個高階的深度神經網路函式庫,它支援了許多的後端框架,方便於建構原型(Prototyping),但卻不適合量產應用。

下面一段程式碼是建構一個 LSTM 模型的範例,可以看出來使用 Keras 可以寫出簡單又易讀的程式碼:

這時侯你可能會想說,若可以將 Keras 結合進 estimator 的話,那不就可以同時保有兩者的優勢?沒錯,確實可以這麼做,下面是將 Keras 轉變成 estimator 的方式,使用 keras.estimator.model_to_estimator()

train_and_evaluate() 的函式裡面,要將 compile 後的 Keras model 轉變成 estimator 的話要使用 make_keras_estimator()

上面是簡單的介紹客製化 estimator,接著我們就來實際動手做做看吧!

[GCP Lab實作-20]:使用客製化 Estimator

這個實作中,我們將學會:

  • 建構一個客製化 estimator

[Part 1]:客製化 Estimator

  1. 登入 GCP,並在 storage 創建一個 bucket。

  2. 開啟Notebooks後,複製課程 Github repo (如Day9的Part 1 & 2步驟)。

  3. 在左邊的資料夾結構,點進 training-data-analyst > courses > machine_learning > deepdive > 05_artandscience ,然後打開檔案 d_customestimator.ipynb

  4. 設定環境變數名稱如 PROJECT、BUCKET、REGION等等:

  1. 模擬一組時間序列的資料,輸出到 csv 檔案:

  1. 編寫讀取資料的函式 read_dataset() ,作為 tf.estimator 需要的 input_fn

  1. 定義一個簡單的 RNN 模型,最後記得要將 model function 提供給 Estimator API,你需要回傳一個 EstimatorSpec


  1. 定義 serving_input_fn ,將資料讀取進來:

  1. 接著定義 train_and_evaluate()

  1. 開始訓練模型,訓練完後的模型 RMSE 約是 0.171:


今天介紹了如何撰寫客製化的 Estimator,所有的課程內容到這邊就全部介紹完畢了(終於啊~),明天我們將總結全部課程的內容。


上一篇
鐵人賽Day27 - Art and Science of Machine Learning (5/6)
下一篇
鐵人賽Day29 - 課程總結
系列文
Machine Learning with TensorFlow on Google Cloud Platform30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言