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 fungsiserving_input_receiver_fn
Anda. Namun, dalam beberapa kasus, Anda mungkin ingin menentukan fitur tambahan untuk pemotongan. Misalnya, Anda memperkenalkan fiturage_category
yang membagi fiturage
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 .