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_savedmodel
のserving_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 に独自のカスタム ポスト エクスポート メトリックを追加したい場合は、こちらのドキュメントを確認してください。