Junte-se a nós no DevFest para a Ucrânia de 14 a 15 de junho Online Registre-se agora

Configurando um modelo salvo de avaliação

TensorFlow Modelo de Análise (TFMA) pode exportar gráfico de avaliação de um modelo para um especial SavedModel chamado EvalSavedModel . (Note-se que o gráfico de avaliação é utilizada e não o gráfico de formação ou de inferência.) O EvalSavedModel contém informação adicional que permite TFMA para calcular os mesmos parâmetros de avaliação definidos no modelo de forma distribuída sobre uma grande quantidade de dados e de usuário definida fatias.

Modificar um modelo existente

Para usar um modelo existente com TFMA, primeiro modificar o modelo para exportar o EvalSavedModel . Isto é feito através da adição de uma chamada para tfma.export.export_eval_savedmodel e é semelhante ao 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 . Como serving_input_receiver_fn , o eval_input_receiver_fn função define um exemplo de entrada do espaço reservado, analisa as características do exemplo e retorna as características analisado. Ele analisa e retorna o rótulo.

O seguinte fragmento 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 que:

  • labels também pode ser um dicionário. Útil para um modelo com várias cabeças.
  • O eval_input_receiver_fn função irá, muito provavelmente, ser o mesmo que o seu serving_input_receiver_fn função. Mas, em alguns casos, você pode querer definir recursos adicionais para fatiar. Por exemplo, você introduzir um age_category recurso que divide a age recurso em vários baldes. Você pode então dividir esse recurso no TFMA para ajudar a entender como o desempenho do seu modelo difere nas diferentes categorias de idade.

Adicionar métricas de pós-exportação

Métricas adicionais que não estão incluídos no modelo podem ser aded usando add_metrics_callbacks . Para mais detalhes, consulte a ajuda do Python para run_model_analysis .

Exemplos ponta a ponta

Experimente a extensa exemplo end-to-end com TensorFlow Transform para pré-processamento recurso, TensorFlow Estimators para treinamento, TensorFlow Modelo de Análise e Jupyter para avaliação, e TensorFlow Servindo para servir.

Adicionar uma métrica de pós-exportação personalizada

Se você quiser adicionar sua própria métrica pós costume de exportação em TFMA, por favor verificação geral a documentação aqui .