Tensorflow KerasモデルとTensorflow Estimatorはどちらも、ニューラルネットワークモデルをトレーニングし、それらを使用して新しいデータを予測することができます。どちらも低レベルのコアTensorFlow APIの上にある高レベルのAPIです。それで、あるものを他のものよりもいつ使うべきですか?
Estimators APIはリリース1.1でTensorflowに追加され、低レベルのTensorflowコア操作よりも高レベルの抽象化を提供します。 TensorFlowの完全なモデルの高レベル表現であるEstimatorインスタンスで動作します。
Keras は、レイヤー、アクティベーション関数、オプティマイザーなどのディープラーニングモデルコンポーネントを抽象化し、開発者が簡単にするという点でEstimators APIと似ています。これはmodel-levelライブラリであり、低レベルの操作を処理しません。これはtensor操作ライブラリまたはbackendsの仕事です。 Kerasは3つのバックエンドをサポートしています- Tensorflow 、 Theano 、および CNTK 。
Kerasは Release 1.4. (2017年11月2日)までTensorflowの一部ではありませんでした。現在、tf.keras
を使用する(または 'Tensorflow Keras'について話す)ときは、TensorflowバックエンドでKerasインターフェイスを使用して、モデルを構築およびトレーニングするだけです。
そのため、Estimator APIとKeras APIはどちらも、低レベルのコアTensorflow APIよりも高レベルのAPIを提供し、どちらを使用してもモデルをトレーニングできます。ただし、ほとんどの場合、Tensorflowを使用している場合は、以下に示す理由からEstimators APIを使用する必要があります。
Estimators APIを使用して複数のサーバーに分散トレーニングを実施できますが、Keras APIは使用できません。
Tensorflow Keras Guide から、それは言う:
Estimators APIは、分散環境のトレーニングモデルに使用されます。
Tensorflow Estimators Guide から、それは次のように述べています:
Estimatorベースのモデルは、モデルを変更せずに、ローカルホストまたは分散マルチサーバー環境で実行できます。さらに、モデルを再コーディングせずに、EstimatorベースのモデルをCPU、GPU、またはTPUで実行できます。
Kerasはモデルの構築を容易にする抽象化を提供しますが、モデルを構築するためのコードを記述する必要があります。 TensorflowはEstimatorsでPre-made Estimatorsを提供します。これは、ハイパーパラメーターを接続するだけですぐに使用できるモデルです。
事前に作成された推定器は、 scikit-learn
での作業方法に似ています。たとえば、Tensorflowの tf.estimator.LinearRegressor
は、sklearn.linear_model.LinearRegression
の scikit-learn
と似ています。
Tensorflowは、グラフと統計を視覚化するのに役立つ TensorBoard と呼ばれる視覚化ツールを提供します。 Estimatorを使用することで、Tensorboardで視覚化されるサマリーを簡単に保存できます。
Kerasモデルを推定器に移行するには、 tf.keras.estimator.model_to_estimator
メソッドを使用します。
私の理解では、クラウドMLエンジンは推定器のみを受け入れることができるため、推定器は大規模なトレーニングデータおよび生産目的での使用を目的としています。
テンソルフロー doc のいずれかからの以下の説明はこれを言及しました:
「Estimators APIは、分散環境のトレーニングモデルに使用されます。これは、実稼働用にモデルをエクスポートできる大規模なデータセットの分散トレーニングなどの業界ユースケースを対象としています。」