Path: blob/master/site/ja/guide/migrate/metrics_optimizers.ipynb
38965 views
Copyright 2021 The TensorFlow Authors.
指標とオプティマイザを移行する
TF1 では、tf.metrics はすべての指標関数の API 名前空間です。各指標は、label と prediction を入力パラメータとして取り、対応する指標テンソルを結果として返す関数です。TF2 では、tf.keras.metrics にすべての指標関数とオブジェクトが含まれています。Metric オブジェクトを tf.keras.Model および tf.keras.layers.layer で使用して、指標値を計算できます。
セットアップ
いくつかの必要な TensorFlow インポートから始めましょう。
デモ用にいくつかの簡単なデータを準備します。
TF1: Estimator を使用した tf.compat.v1.metrics
TF1 では、指標は eval_metric_ops として EstimatorSpec に追加でき、演算は tf.metrics で定義されたすべての指標関数を介して生成されます。例に従って、tf.metrics.accuracy の使用方法を確認できます。
また、指標は tf.estimator.add_metrics() を介してエスティメータに直接追加できます。
TF2: tf.keras.Model を使用した Keras メトリクス API
TF2 では、tf.keras.metrics にすべての指標クラスと関数が含まれています。これらは OOP スタイルで設計されており、他の tf.keras API と密接に統合されています。すべての指標は tf.keras.metrics 名前空間で見つけることができ、通常は tf.compat.v1.metrics と tf.keras.metrics の間に直接マッピングがあります。
次の例では、指標が model.compile() メソッドに追加されています。ユーザーは、ラベルと予測テンソルを指定せずに、指標インスタンスを作成するだけで済みます。Keras モデルは、モデルの出力とラベルを指標オブジェクトにルーティングします。
Eager execution を有効にすると、tf.keras.metrics.Metric インスタンスを直接使用して、numpy データまたは Eager テンソルを評価できます。tf.keras.metrics.Metric オブジェクトはステートフルコンテナーです。指標値は metric.update_state(y_true, y_pred) で更新でき、結果は metrics.result() で取得できます。
tf.keras.metrics.Metric の詳細については、tf.keras.metrics.Metric の API ドキュメントと移行ガイドを参照してください。
TF1.x オプティマイザの Keras オプティマイザへの移行
Adam オプティマイザや勾配降下オプティマイザなどの tf.compat.v1.train 内のオプティマイザは、tf.keras.optimizers 内に同等のものをもちます。
以下の表は、これらのレガシーオプティマイザを Keras の同等のものに変換する方法をまとめたものです。追加の手順(デフォルトの学習率の更新など)が必要でない限り、TF1.x バージョンを TF2 バージョンに直接置き換えることができます。
オプティマイザを変換すると、古いチェックポイントの互換性が失われる可能性があることに注意してください。
| TF1.x | TF2 | 追加の手順 |
|---|---|---|
| `tf.v1.train.GradientDescentOptimizer` | `tf.keras.optimizers.SGD` | なし |
| `tf.v1.train.MomentumOptimizer` | `tf.keras.optimizers.SGD` | `momentum` 引数を含む |
| `tf.v1.train.AdamOptimizer` | `tf.keras.optimizers.Adam` | `beta1` および `beta2` 引数の名前を `beta_1` および `beta_2` に変更する |
| `tf.v1.train.RMSPropOptimizer` | `tf.keras.optimizers.RMSprop` | `decay` 引数の名前を `rho` に変更する |
| `tf.v1.train.AdadeltaOptimizer` | `tf.keras.optimizers.Adadelta` | なし |
| `tf.v1.train.AdagradOptimizer` | `tf.keras.optimizers.Adagrad` | なし |
| `tf.v1.train.FtrlOptimizer` | `tf.keras.optimizers.Ftrl` | `accum_name` および `linear_name` 引数を削除する |
| `tf.contrib.AdamaxOptimizer` | `tf.keras.optimizers.Adamax` | `beta1` および `beta2` 引数の名前を `beta_1` および `beta_2` に変更する |
| `tf.contrib.Nadam` | `tf.keras.optimizers.Nadam` | `beta1` および `beta2` 引数の名前を `beta_1` および `beta_2` に変更する |
注意: TF2 では、すべてのイプシロン(数値安定定数)のデフォルトが 1e-8 ではなく 1e-7 になりました。ほとんどの場合、この違いは無視できます。
TensorFlow.org で表示
Google Colab で実行
GitHub でソースを表示
ノートブックをダウンロード