Path: blob/master/site/ja/guide/migrate/canned_estimators.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
移行例: Canned Estimator
Canned(または既製)Estimator は、TensorFlow 1 でさまざまな典型的なユースケースのモデルをトレーニングするための迅速かつ簡単な方法として従来使用されてきました。 TensorFlow 2 は、Keras モデルを介して、それらの多くの単純な近似代用を提供します。 TensorFlow 2 の代用が組み込まれていない Canned Estimator の場合でも、独自の置換をかなり簡単に構築できます。
このガイドでは、TensorFlow 1 の tf.estimator
から派生したモデルを Keras を使用して TensorFlow 2 に移行する方法を示すために、直接相当するものとカスタム置換の例をいくつか紹介します。
すなわち、このガイドには移行の例が含まれています。
TensorFlow 1 の
tf.estimator
のLinearEstimator
、Classifier
またはRegressor
から、TensorFlow 2 のtf.compat.v1.keras.models.LinearModel
へTensorFlow 1 の
tf.estimator
のDNNEstimator
、Classifier
またはRegressor
から、TensorFlow 2 のカスタム Keras DNN ModelKeras へTensorFlow 1 の
tf.estimator
のDNNLinearCombinedEstimator
、Classifier
またはRegressor
から、TensorFlow 2 のtf.compat.v1.keras.models.WideDeepModel
へTensorFlow 1 の
tf.estimator
のBoostedTreesEstimator
、Classifier
またはRegressor
から、TensorFlow 2 のtfdf.keras.GradientBoostedTreesModel
へ
モデルのトレーニングの一般的な前処理は、特徴量の前処理です。これは、tf.feature_column
を使用して TensorFlow 1 Estimator モデルに対して行われます。TensorFlow 2 での特徴量の前処理の詳細については、特徴量列から Keras 前処理レイヤー API への移行に関するこのガイドをご覧ください。
セットアップ
いくつかの必要な TensorFlow インポートから始めます。
標準のタイタニックのデータセットからデモンストレーション用のいくつかの簡単なデータを準備します。
そして、さまざまな TensorFlow 1 Estimator および TensorFlow 2 Keras モデルで使用する単純なサンプルオプティマイザをインスタンス化するメソッドを作成します。
例 1: LinearEstimator からの移行
TensorFlow 1: LinearEstimator の使用
TensorFlow 1 では、tf.estimator.LinearEstimator
を使用して、回帰および分類問題のベースライン線形モデルを作成できます。
TensorFlow 2: Keras LinearModel の使用
TensorFlow 2 では、tf.estimator.LinearEstimator
の代替である Keras tf.compat.v1.keras.models.LinearModel
のインスタンスを作成できます。tf.compat.v1.keras
パスは、互換性のために事前に作成されたモデルが存在することを示すために使用されます。
例 2: DNNEstimator からの移行
TensorFlow 1: DNNEstimator の使用
TensorFlow 1 では、tf.estimator.DNNEstimator
を使用して、回帰および分類問題のベースラインとなるディープニューラルネットワーク(DNN)モデルを作成できます。
TensorFlow 2: Keras を使用してカスタム DNN モデルを作成する
TensorFlow 2 では、カスタム DNN モデルを作成して、tf.estimator.DNNEstimator
によって生成されたものを置き換えることができ、同様のレベルのユーザー指定のカスタマイズが可能です(例えば、前の例のように、選択したモデルオプティマイザをカスタマイズする機能)。
同様のワークフローを使用して、tf.estimator.experimental.RNNEstimator
を Keras 再帰型ニューラルネットワーク(RNN)モデルに置き換えることができます。Keras は、tf.keras.layers.RNN
、tf.keras.layers.LSTM
、および tf.keras.layers.GRU
によって、多数の組み込みのカスタマイズ可能な選択肢を提供します。詳細については、Keras を使用した RNN ガイドの組み込み RNN レイヤー: 簡単な例をご覧ください。
例 3: DNNLinearCombinedEstimator からの移行
TensorFlow 1: DNNLinearCombinedEstimator の使用
TensorFlow 1 では、tf.estimator.DNNLinearCombinedEstimator
を使用して、線形コンポーネントと DNN コンポーネントの両方のカスタマイズ機能を備えた回帰および分類問題のベースライン結合モデルを作成できます。
TensorFlow 2: Keras WideDeepModel の使用
TensorFlow 2 では、Keras の tf.compat.v1.keras.models.WideDeepModel
インスタンスを作成して、tf.estimator.DNNLinearCombinedEstimator
によって生成されたものを置き換えることができ、同様のレベルのユーザー指定のカスタマイズが可能です(例えば、前の例のように、選択したモデルオプティマイザをカスタマイズする機能)。
この WideDeepModel
は、構成要素である LinearModel
とカスタム DNN モデルに基づいて構築されます。どちらも前の 2 つの例で説明されています。必要に応じて、組み込みの LinearModel
の代わりにカスタム線形モデルを使用することもできます。
Canned Estimator の代わりに独自のモデルを構築したい場合は、 Keras Sequential モデルガイドをご覧ください。カスタムトレーニングとオプティマイザの詳細については、カスタムトレーニング: チュートリアルガイドをご覧ください。
例 4: BoostedTreesEstimator からの移行
TensorFlow 1: BoostedTreesEstimator の使用
TensorFlow 1 では、tf.estimator.BoostedTreesEstimator
を使用してベースラインを作成し、回帰および分類問題のデシジョンツリーのアンサンブルを使用してベースライン勾配ブースティングモデルを作成できました。この機能は、TensorFlow 2 には含まれなくなりました。
TensorFlow 2: TensorFlow Decision Forests の使用
TensorFlow 2 では、tf.estimator.BoostedTreesEstimator
は
TensorFlow Decision Forests パッケージの tfdf.keras.GradientBoostedTreesModel に置き換えられました。
TensorFlow Decision Forests は、tf.estimator.BoostedTreesEstimator
に比べて、特に品質、速度、使いやすさ、および柔軟性に関してさまざまな利点を提供します。TensorFlow Decision Forests について学ぶには、初心者のための colab から始めてください。
次の例は、TensorFlow 2 を使用して勾配ブーストツリーモデルをトレーニングする方法を示しています。
TensorFlow Decision Forests のインストール
TensorFlow データセットを作成します。Decision Forests は多くの種類の特徴量をネイティブにサポートしており、前処理を必要としないことに注意してください。
train_dataset
データセットでモデルをトレーニングします。
eval_dataset
データセットでモデルの品質を評価します。
勾配ブーストツリーは、TensorFlow Decision Forests で利用できる多くのデシジョンフォレストアルゴリズムの 1 つにすぎません。たとえば、Random Forests(tfdf.keras.GradientBoostedTreesModel として利用可能であり、オーバーフィッティングに対して非常に耐性があります)に対して、CART(tfdf.keras.CartModel として利用可能)はモデルの解釈に最適です。
次の例では、Random Forest モデルをトレーニングしてプロットします。
最後の例では、CART モデルをトレーニングして評価します。