Mengonfigurasi Model Tersimpan Eval

TensorFlow Model Analysis (TFMA) dapat mengekspor grafik evaluasi model ke SavedModel khusus yang disebut EvalSavedModel . (Perhatikan bahwa grafik evaluasi digunakan dan bukan grafik untuk pelatihan atau inferensi.) EvalSavedModel berisi informasi tambahan yang memungkinkan TFMA menghitung metrik evaluasi yang sama yang ditentukan dalam model secara terdistribusi pada sejumlah besar data dan ditentukan pengguna. irisan.

Memodifikasi model yang sudah ada

Untuk menggunakan model yang sudah ada dengan TFMA, modifikasi model terlebih dahulu untuk mengekspor EvalSavedModel . Hal ini dilakukan dengan menambahkan panggilan ke tfma.export.export_eval_savedmodel dan mirip dengan estimator.export_savedmodel . Misalnya:

# 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 harus ditentukan dan serupa dengan serving_input_receiver_fn untuk estimator.export_savedmodel . Seperti serving_input_receiver_fn , fungsi eval_input_receiver_fn mendefinisikan contoh placeholder input, mengurai fitur dari contoh, dan mengembalikan fitur yang diurai. Ini mem-parsing dan mengembalikan label.

Cuplikan berikut mendefinisikan contoh 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'])

Dalam contoh ini Anda dapat melihat bahwa:

  • labels juga bisa menjadi kamus. Berguna untuk model berkepala banyak.
  • Fungsi eval_input_receiver_fn kemungkinan besar akan sama dengan fungsi serving_input_receiver_fn Anda. Namun, dalam beberapa kasus, Anda mungkin ingin menentukan fitur tambahan untuk pemotongan. Misalnya, Anda memperkenalkan fitur age_category yang membagi fitur age menjadi beberapa kelompok. Anda kemudian dapat membagi fitur ini di TFMA untuk membantu memahami perbedaan performa model Anda di berbagai kategori usia.

Menambahkan Metrik Pasca Ekspor

Metrik tambahan yang tidak disertakan dalam model dapat ditambahkan menggunakan add_metrics_callbacks . Untuk detail selengkapnya, lihat bantuan Python untuk run_model_analysis .

Contoh ujung ke ujung

Coba contoh menyeluruh yang ekstensif yang menampilkan Transformasi TensorFlow untuk prapemrosesan fitur, Estimator TensorFlow untuk pelatihan, Analisis Model TensorFlow dan Jupyter untuk evaluasi, dan Penyajian TensorFlow untuk penayangan.

Menambahkan Metrik Ekspor Pos Kustom

Jika Anda ingin menambahkan metrik ekspor pos kustom Anda sendiri di TFMA, silakan periksa dokumentasinya di sini .