評価保存モデルの構成

TensorFlow Model Analysis (TFMA) は、モデルの評価グラフをEvalSavedModelと呼ばれる特別なSavedModelにエクスポートできます。 (トレーニングや推論用のグラフではなく、評価グラフが使用されることに注意してください。) EvalSavedModelには、モデルに定義されているのと同じ評価メトリクスを TFMA が大量のデータおよびユーザー定義のデータに分散して計算できるようにする追加情報が含まれています。スライス。

既存のモデルを変更する

既存のモデルを TFMA で使用するには、まずモデルを変更してEvalSavedModelをエクスポートします。これはtfma.export.export_eval_savedmodelへの呼び出しを追加することで行われ、 estimator.export_savedmodelと同様です。例えば:

# Define, train and export your estimator as usual
estimator = tf.estimator.DNNClassifier(...)
estimator.train(...)
estimator.export_savedmodel(...)

# Also export the EvalSavedModel
tfma.export.export_eval_savedmodel(
  estimator=estimator, export_dir_base=export_dir,
  eval_input_receiver_fn=eval_input_receiver_fn)

eval_input_receiver_fnは定義する必要があり、 estimator.export_savedmodelserving_input_receiver_fnに似ています。 serving_input_receiver_fnと同様に、 eval_input_receiver_fn関数は入力プレースホルダーの例を定義し、例の特徴を解析し、解析された特徴を返します。ラベルを解析して返します。

次のスニペットは、 eval_input_receiver_fn例を定義します。

country = tf.feature_column.categorical_column_with_hash('country', 100)
language = tf.feature_column.categorical_column_with_hash('language', 100)
age = tf.feature_column.numeric_column('age')
label = tf.feature_column.numeric_column('label')

def eval_input_receiver_fn():
  serialized_tf_example = tf.compat.v1.placeholder(
      dtype=tf.string, shape=[None], name='input_example_placeholder')

  # This *must* be a dictionary containing a single key 'examples', which
  # points to the input placeholder.
  receiver_tensors = {'examples': serialized_tf_example}

  feature_spec =  tf.feature_column.make_parse_example_spec(
      [country, language, age, label])
  features = tf.io.parse_example(serialized_tf_example, feature_spec)

  return tfma.export.EvalInputReceiver(
    features=features,
    receiver_tensors=receiver_tensors,
    labels=features['label'])

この例では、次のことがわかります。

  • labels辞書にもなります。多頭モデルに便利です。
  • eval_input_receiver_fn関数は、ほとんどの場合、 serving_input_receiver_fn関数と同じになります。ただし、場合によっては、スライス用の追加機能を定義することが必要になる場合があります。たとえば、 age特徴を複数のバケットに分割するage_category特徴を導入します。次に、TFMA でこの機能を詳しく分析して、モデルのパフォーマンスが年齢カテゴリーごとにどのように異なるかを理解するのに役立ちます。

エクスポート後のメトリクスの追加

モデルに含まれていない追加のメトリクスは、 add_metrics_callbacksを使用して追加できます。詳細については、 run_model_analysisの Python ヘルプを参照してください。

エンドツーエンドの例

特徴の前処理にはTensorFlow Transform 、トレーニングにはTensorFlow Estimators 、評価にはTensorFlow Model Analysisと Jupyter、そしてサービスにはTensorFlow Servingを備えた広範なエンドツーエンドの例をお試しください。

エクスポート後のカスタム指標の追加

TFMA に独自のカスタム ポスト エクスポート メトリックを追加したい場合は、こちらのドキュメントを確認してください。