Analisis Model TensorFlow (TFMA) dapat mengekspor grafik evaluasi model untuk khusus SavedModel
disebut EvalSavedModel
. (Perhatikan bahwa grafik evaluasi digunakan dan tidak grafik untuk pelatihan atau inferensi.) The EvalSavedModel
mengandung informasi tambahan yang memungkinkan TFMA untuk menghitung metrik evaluasi yang sama yang didefinisikan dalam model dengan cara didistribusikan melalui sejumlah besar data dan user-didefinisikan irisan.
Memodifikasi model yang ada
Untuk menggunakan model yang sudah ada dengan TFMA, pertama memodifikasi model untuk mengekspor EvalSavedModel
. Hal ini dilakukan dengan menambahkan panggilan ke tfma.export.export_eval_savedmodel
dan mirip dengan estimator.export_savedmodel
. Sebagai contoh:
# 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 didefinisikan dan mirip dengan serving_input_receiver_fn
untuk estimator.export_savedmodel
. Seperti serving_input_receiver_fn
, yang eval_input_receiver_fn
fungsi mendefinisikan contoh masukan placeholder, mem-parsing fitur dari contoh, dan mengembalikan fitur parsing. Ini mem-parsing dan mengembalikan label.
Potongan 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. - The
eval_input_receiver_fn
fungsi akan, kemungkinan besar, sama seperti Andaserving_input_receiver_fn
fungsi. Namun, dalam beberapa kasus, Anda mungkin ingin menentukan fitur tambahan untuk slicing. Misalnya, Anda memperkenalkanage_category
fitur yang membagiage
fitur menjadi beberapa ember. Anda kemudian dapat mengiris fitur ini di TFMA untuk membantu memahami bagaimana kinerja model Anda berbeda di berbagai kategori usia.
Menambahkan Metrik Ekspor Pos
Metrik tambahan yang tidak termasuk dalam model dapat aded menggunakan add_metrics_callbacks
. Untuk lebih jelasnya, lihat bantuan Python untuk run_model_analysis
.
Contoh ujung ke ujung
Coba luas contoh end-to-end yang menampilkan TensorFlow Transform untuk fitur preprocessing, TensorFlow estimator untuk pelatihan, Analisis Model TensorFlow dan Jupyter untuk evaluasi, dan TensorFlow Melayani untuk melayani.
Menambahkan Metrik Ekspor Pos Kustom
Jika Anda ingin menambahkan metrik ekspor posting kustom Anda sendiri di TFMA, silakan checkout dokumentasi di sini .