web-dev-qa-db-ja.com

Tensorflow Keras ModelとEstimatorの違いは何ですか?

Tensorflow KerasモデルとTensorflow Estimatorはどちらも、ニューラルネットワークモデルをトレーニングし、それらを使用して新しいデータを予測することができます。どちらも低レベルのコアTensorFlow APIの上にある高レベルのAPIです。それで、あるものを他のものよりもいつ使うべきですか?

39
d4nyll

バックグラウンド

Estimators APIはリリース1.1でTensorflowに追加され、低レベルのTensorflowコア操作よりも高レベルの抽象化を提供します。 TensorFlowの完全なモデルの高レベル表現であるEstimatorインスタンスで動作します。

Keras は、レイヤー、アクティベーション関数、オプティマイザーなどのディープラーニングモデルコンポーネントを抽象化し、開発者が簡単にするという点でEstimators APIと似ています。これはmodel-levelライブラリであり、低レベルの操作を処理しません。これはtensor操作ライブラリまたはbackendsの仕事です。 Kerasは3つのバックエンドをサポートしています- TensorflowTheano 、および 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.LinearRegressionscikit-learn と似ています。

他のTensorflowツールとの統合

Tensorflowは、グラフと統計を視覚化するのに役立つ TensorBoard と呼ばれる視覚化ツールを提供します。 Estimatorを使用することで、Tensorboardで視覚化されるサマリーを簡単に保存できます。

Kerasモデルの推定器への変換

Kerasモデルを推定器に移行するには、 tf.keras.estimator.model_to_estimator メソッドを使用します。

53
d4nyll

私の理解では、クラウドMLエンジンは推定器のみを受け入れることができるため、推定器は大規模なトレーニングデータおよび生産目的での使用を目的としています。

テンソルフロー doc のいずれかからの以下の説明はこれを言及しました:

「Estimators APIは、分散環境のトレーニングモデルに使用されます。これは、実稼働用にモデルをエクスポートできる大規模なデータセットの分散トレーニングなどの業界ユースケースを対象としています。」

0
Jane Li