Tensorflow Keras模型和Estimator有什麼區別?

對於整個tensorflow2.0框架,tensorflow Keras模型和Tensorflow Estimators都能夠訓練神經網絡模型並使用它們來預測新的數據。 它們都是TensorFlow 的高級API。 那麼什麼時候應該用一個來代替另一個呢?,它們兩者的區別是什麼?又有什麼聯繫?工程實戰中怎麼區分二者的使用?

參考:https://stackoverflow.com/questions/51455863/whats-the-difference-between-a-tensorflow-keras-model-and-estimator

Background:

Estimators API是在版本1.1中添加到Tensorflow中的,它提供了對較低級別Tensorflow核心操作的高級抽象。 它與Estimator實例一起使用,該實例是TensorFlow對完整模型的高級表示。
Keras與Estimators API相似之處在於,它抽象化了深度學習模型組件,如層 layers, 激活函數activation functions 和優化器optimizers,使開發人員更容易使用。 它是一個模型級別的庫,不處理低級操作,低級操作是張量操作庫或後端的工作。 Keras支持三個後端--Tensorflow,Theano和CNTK。
Keras在版本1.4.0(2017年11月2日)之前不屬於Tensorflow的一部分,直到版本1.4.0,Keras纔是Tensorflow的一部分。現在,當您使用tf.Keras(或者談論'Tensorflow Keras')時,您只需使用Keras接口和Tensorflow後端來構建和訓練您的模型。

因此,Estimator API和Keras API都在低級核心Tensorflow API之上提供了更高級的API,您可以使用其中任何一個來訓練您的模型。

estimator跟keras一樣是tf代碼的封裝,可以讓大家避免寫重複的代碼。其中estimator是1.0中比較流行的。keras則是2.0主推的。學習estimator的原因則在於 1. estimator 1.0中就有,平臺支持比較成熟。比如在google內部的分佈式平臺上keras還沒有支持,只能轉成estimator來運行。2. 很多代碼是用estimator寫的,學習estimator可以讓大家更輕鬆看懂這些代碼。

summary:

聯繫: keras和estimator都屬於對模型的封裝,都會封裝模型的訓練流程的代碼。都有分佈式的支持,還有dataset的支持

區別:estimator在1.0中就有,主要的封裝抽象在模型訓練流程,需要自行定義模型結構。keras則對層次的模型訓練流程都進行的抽象。當然,也可以使用keras對層次的封裝來定義模型結構送到estimator中去使用。

實戰中:如果是tf1.0, 建議使用estimator,2.0以上建議使用keras API

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章