今天我們將講到:
使用 TensorFlow 中的 estimator API 有著許多好處如:
而客製化 estimator 的方式就是在 model_fn
上使用自定義的 model function:
下面的 myfunc()
是一個例子,使用了自己定義的模型 model_from_research_paper()
,這邊要注意的是 myfunc()
的輸入參數必須要依序是 (features, targets, mode)
:
而其中 mode
這個參數是來判斷 estimator 的模式,不同的模式會有不同的步驟,例如說訓練和評估的時候需要計算損失和評估衡量,但是預測的時候就不需要了:
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,並在 storage 創建一個 bucket。
開啟Notebooks後,複製課程 Github repo (如Day9的Part 1 & 2步驟)。
在左邊的資料夾結構,點進 training-data-analyst > courses > machine_learning > deepdive > 05_artandscience ,然後打開檔案 d_customestimator.ipynb。
設定環境變數名稱如 PROJECT、BUCKET、REGION等等:
read_dataset()
,作為 tf.estimator
需要的 input_fn
:EstimatorSpec
:serving_input_fn
,將資料讀取進來:train_and_evaluate()
:今天介紹了如何撰寫客製化的 Estimator,所有的課程內容到這邊就全部介紹完畢了(終於啊~),明天我們將總結全部課程的內容。