Path: blob/master/site/ja/guide/migrate/metrics_optimizers.ipynb
25118 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
になりました。ほとんどの場合、この違いは無視できます。