Tensorflow-Estimator-估算器-翻譯整理

因?yàn)闆](méi)有找到官方對(duì)estimator的翻譯,這里暫時(shí)稱作估算器,待以后改正。


估算器是tf重要的高級(jí)接口high level api,被設(shè)計(jì)用來(lái)簡(jiǎn)化機(jī)器學(xué)習(xí)程序的。

估算器有tf自帶的預(yù)制pre-made估算器,也支持用戶自己編寫創(chuàng)建自定義custom估算器。

估算器可以被灌入數(shù)據(jù)執(zhí)行訓(xùn)練train,可以對(duì)訓(xùn)練的模型進(jìn)行評(píng)價(jià)evaluate,可以使用訓(xùn)練好的模型進(jìn)行預(yù)測(cè)predict。

通過(guò)估算器操作模型

估算器優(yōu)勢(shì)

  • 可以本地或分布式服務(wù)器上運(yùn)行基于估算器的模型,而無(wú)需更改,甚至是CPU、GPU、TPU上運(yùn)行。
  • 估算器簡(jiǎn)化了模型開(kāi)發(fā)者之間共享方式。
  • 可以利用估算器憑直覺(jué)的簡(jiǎn)單創(chuàng)建模型。
  • 估算器本身就是基于tf.layers,自定義起來(lái)更簡(jiǎn)單。
  • 估算器直接創(chuàng)建graph圖,從而無(wú)需手工創(chuàng)建。
  • 估算器創(chuàng)建了一個(gè)安全的分布式訓(xùn)練循環(huán),你可以:
    • 建造graph圖
    • 初始化變量
    • 開(kāi)始隊(duì)列
    • 控制處理異常
    • 創(chuàng)建checkpoint檢查點(diǎn)文件,從失敗中恢復(fù)
    • 將summary總結(jié)保存到tensorboard信息板

當(dāng)使用估算器編寫應(yīng)用的時(shí)候,必須把數(shù)據(jù)輸入流程data input pipline單獨(dú)出來(lái),這可以使流程簡(jiǎn)化。


預(yù)制估算器Pre-made Estimator

估算器為你管理著graph圖和session會(huì)話,你無(wú)需手工管理它們。
利用估算器可以很容易的更換不同的算法,比如DNNClassifier等。

使用預(yù)制估算器的應(yīng)用結(jié)構(gòu):

  1. 編寫數(shù)據(jù)導(dǎo)入函數(shù),比如導(dǎo)入訓(xùn)練數(shù)據(jù)的函數(shù)和導(dǎo)入測(cè)試數(shù)據(jù)的函數(shù)。這樣的函數(shù)應(yīng)該返回:
  • 特征字典dict:{特征名:張量Tensor或稀疏張量SpareTensor}
  • 標(biāo)簽張量Tensor,包含標(biāo)簽labels
#針對(duì)訓(xùn)練的喂食函數(shù)
def train_input_fn(features, labels, batch_size):
    dataset = tf.data.Dataset.from_tensor_slices((dict(features), labels))
    dataset = dataset.shuffle(1000).repeat().batch(batch_size) 
    features_result, labels_result = dataset.make_one_shot_iterator().get_next() 
    print(features_result, labels_result)
    return dataset.make_one_shot_iterator().get_next()

得到features_result, labels_result打印結(jié)果是:

#features_result 特征字典
{
  'SepalLength': <tf.Tensor 'IteratorGetNext:2' shape=(?,) dtype=float64>, 
  'SepalWidth': <tf.Tensor 'IteratorGetNext:3' shape=(?,) dtype=float64>, 
  'PetalLength': <tf.Tensor 'IteratorGetNext:0' shape=(?,) dtype=float64>, 
  'PetalWidth': <tf.Tensor 'IteratorGetNext:1' shape=(?,) dtype=float64>
}
#labels_result 標(biāo)簽列
Tensor("IteratorGetNext:4", shape=(?,), dtype=int64, device=/device:CPU:0)
  1. 定義特征列,tf.feature_column定義了特征的名稱、數(shù)據(jù)類型和預(yù)處理方法。
# 兩個(gè)數(shù)值型特征列
population = tf.feature_column.numeric_column('population')
crime_rate = tf.feature_column.numeric_column('crime_rate')
# 數(shù)值型特征列指定了規(guī)則化函數(shù)。每個(gè)數(shù)值將被減去100
median_education = tf.feature_column.numeric_column('median_education',
                    normalizer_fn='lambda x: x - 100')
  1. 實(shí)例化預(yù)制估算器
# 實(shí)例化,傳入特征列列表[fc1,fc2,fc3]
estimator = tf.estimator.Estimator.LinearClassifier(
    feature_columns=[population, crime_rate, median_education],
    )
  1. 調(diào)用train,evaluate,predict函數(shù)
# my_training_set是第一步編寫的輸入函數(shù),這里它并沒(méi)有帶參數(shù)輸入原始數(shù)據(jù)
estimator.train(input_fn=my_training_set, steps=2000)

預(yù)制估算器實(shí)現(xiàn)了計(jì)算圖graph運(yùn)算的最佳方法,無(wú)論是單機(jī)運(yùn)算還是群集運(yùn)算
,也實(shí)現(xiàn)全局統(tǒng)計(jì)的最佳方法。自定義估算器則要手工實(shí)現(xiàn)這些。


自定義估算器Custom Estimator

無(wú)論是預(yù)制還是自定義的估算器,核心都是model_fn函數(shù),它將實(shí)現(xiàn)創(chuàng)建圖graph和訓(xùn)練、評(píng)價(jià)、預(yù)測(cè)方法。


建議流程

  1. 如果有合適的預(yù)制估算器,先使用它作為基礎(chǔ)
  2. 使用預(yù)制估算器創(chuàng)建和測(cè)試你的模型,包括模型的完整性和可靠性
  3. 如果有其他可選的預(yù)制估算器,實(shí)驗(yàn)?zāi)囊粋€(gè)是最好的
  4. 可以的話,進(jìn)一步自定義改進(jìn)你的估算器

探索人工智能的新邊界

如果您發(fā)現(xiàn)文章錯(cuò)誤,請(qǐng)不吝留言指正;
如果您覺(jué)得有用,請(qǐng)點(diǎn)喜歡;
如果您覺(jué)得很有用,感謝轉(zhuǎn)發(fā)~


END

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容