tensorflow教程 开发者指南——评估器 estimator(tensorflow官方推荐使用的编程API)
生活随笔
收集整理的這篇文章主要介紹了
tensorflow教程 开发者指南——评估器 estimator(tensorflow官方推荐使用的编程API)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
參考文章:評估器 tf.estimator
文章目錄
- 評估器
- 使用評估器的優勢
- 預定義的評估器
- 預定義評估器的程序結構
- 預定義評估器的好處
- 自定義評估器
- 推薦的工作流
- 從 Keras 模塊中創建評估器
評估器
tf.estimator
- 訓練
- 評估
- 預測
- 作為服務導出
tf.estimator.Estimator
tf.contrib.learn.Estimator
使用評估器的優勢
評估器可以為我們帶來以下幾點好處:
- 基于評估器的模型可以運行在單機上,也可以運行在分布式的多臺服務器環境上并且不需要做任何修改。更棒的是,你還可以將基于評估器的模型運行在 CPUs,GPUs 或者 TPUs 上。
- 評估器簡化了模型開發人員內部共享的實現。
- 你可以用高級的直觀的代碼編寫某種狀態的藝術模型。簡而言之,使用評估器通常會比使用 TensorFlow 的低級 API 更加簡捷。
- 評估器是建立在 tf.layers 上的,簡化了自定義的內容。
- 評估器已經為你構建了圖表。換句話說,你不需要構建圖表了。
- 評估器提供了一個安全的分布式訓練的循環,能夠控制以下操作的運行時間和運行方式:
1、創建圖表
2、初始化變量
3、啟動隊列
4、處理異常
5、創建校驗文件和錯誤恢復
6、儲存給 TensorBoard 展示的數據
當你用評估器寫應用時,你必須將數據輸入管道和模型分開。這種分離簡化了不同數據集的實驗。
預定義的評估器
tf.estimator.DNNClassifier
預定義評估器的程序結構
基于預定義評估器的程序一般包含下面四步:
1)一個字典,它的 key 是特征名,而 values 是對應的張量(或者是稀疏張量),張量里面包含了對應的特征數據。
2)一個張量,它包含了一個或多個標簽。
舉個例子,下面的代碼是一個輸入函數的基本框架:
數據導入
譬如說,所有的評估器都提供了 train 方法,它可以用來訓練模型。
預定義評估器的好處
預定義評估器是編碼的最佳實踐,它有下面兩點好處:
- 單機或者集群上運行時,計算圖的哪部分應該在哪里運行和其實現策略的最佳實踐。
- 事件記錄和通用內容摘要的最佳實踐。
如果你不使用預定義的評估器,那么你需要自己實現上面所說到的功能。
自定義評估器
創建定制化 Estimator
推薦的工作流
我們推薦的工作流程(workflow)如下:
從 Keras 模塊中創建評估器
tf.keras.estimator.model_to_estimator
# 實例化一個 kera inception v3 模型。 keras_inception_v3 = tf.keras.applications.inception_v3.InceptionV3(weights=None) # 定義好用來訓練模型使用的優化器,損失和評價指標,然后再編譯它 keras_inception_v3.compile(optimizer=tf.keras.optimizers.SGD(lr=0.0001, momentum=0.9),loss='categorical_crossentropy',metric='accuracy') # 從已編譯的 Keras 模型中創建一個評估器,注意,keras 模型的初始狀態會被保存在這個評估器中。 est_inception_v3 = tf.keras.estimator.model_to_estimator(keras_model=keras_inception_v3)# Treat the derived Estimator as you would with any other Estimator. # First, recover the input name(s) of Keras model, so we can use them as the # feature column name(s) of the Estimator input function: # 像處理其他評估器一樣處理派生評估器。 # 首先,恢復 Keras 模型的輸入名稱,這樣就可以將它們當做評估器數去函數的特征列名: keras_inception_v3.input_names # print out: ['input_1'] # 一旦有了輸入名稱,就可以創建輸入函數,例如,對于 numpy ndarray 格式的輸入: train_input_fn = tf.estimator.inputs.numpy_input_fn(x={"input_1": train_data},y=train_labels,num_epochs=1,shuffle=False) # 需要進行訓練時,調用評估器的訓練函數: est_inception_v3.train(input_fn=train_input_fn, steps=2000)注意,Keras 評估器的特征列和標簽的名稱來自相應的已編譯 Keras 模型。例如上面的 train_input_fn 的輸入鍵值可以從 keras_inception_v3.input_names 獲取,類似地,預測的輸出名稱可以從 keras_inception_v3.output_names 獲得。
tf.keras.estimator.model_to_estimator
總結
以上是生活随笔為你收集整理的tensorflow教程 开发者指南——评估器 estimator(tensorflow官方推荐使用的编程API)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tensorflow教程 开始——Pre
- 下一篇: 分布式(distributed)是什么意