O TensorFlow Model Analysis (TFMA) pode exportar o gráfico de avaliação de um modelo para um SavedModel
especial chamado EvalSavedModel
. (Observe que o gráfico de avaliação é usado e não o gráfico para treinamento ou inferência.) O EvalSavedModel
contém informações adicionais que permitem ao TFMA calcular as mesmas métricas de avaliação definidas no modelo de maneira distribuída sobre uma grande quantidade de dados e definidos pelo usuário. fatias.
Modificar um modelo existente
Para usar um modelo existente com TFMA, primeiro modifique o modelo para exportar o EvalSavedModel
. Isso é feito adicionando uma chamada a tfma.export.export_eval_savedmodel
e é semelhante a estimator.export_savedmodel
. Por exemplo:
# 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
deve ser definido e é semelhante ao serving_input_receiver_fn
para estimator.export_savedmodel
. Assim como serving_input_receiver_fn
, a função eval_input_receiver_fn
define um exemplo de espaço reservado de entrada, analisa os recursos do exemplo e retorna os recursos analisados. Ele analisa e retorna o rótulo.
O trecho a seguir define um exemplo 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'])
Neste exemplo você pode ver isso:
-
labels
também podem ser um dicionário. Útil para um modelo com várias cabeças. - A função
eval_input_receiver_fn
provavelmente será igual à sua funçãoserving_input_receiver_fn
. Mas, em alguns casos, você pode querer definir recursos adicionais para fatiamento. Por exemplo, você introduz um recursoage_category
que divide o recursoage
em vários grupos. Você pode então dividir esse recurso no TFMA para ajudar a entender como o desempenho do seu modelo difere em diferentes categorias de idade.
Adicionando métricas de pós-exportação
Métricas adicionais que não estão incluídas no modelo podem ser adicionadas usando add_metrics_callbacks
. Para obter mais detalhes, consulte a ajuda do Python para run_model_analysis
.
Exemplos de ponta a ponta
Experimente o extenso exemplo completo com TensorFlow Transform para pré-processamento de recursos, TensorFlow Estimators para treinamento, TensorFlow Model Analysis e Jupyter para avaliação e TensorFlow Serving para veiculação.
Adicionando uma métrica de exportação de postagem personalizada
Se você deseja adicionar sua própria métrica de pós-exportação personalizada no TFMA, verifique a documentação aqui .