TensorFlow Model Analysis (TFMA) สามารถส่งออก กราฟการประเมิน ของโมเดลไปยัง SavedModel
พิเศษที่เรียกว่า EvalSavedModel
(โปรดทราบว่ากราฟการประเมินถูกใช้ ไม่ใช่กราฟสำหรับการฝึกอบรมหรือการอนุมาน) EvalSavedModel
มีข้อมูลเพิ่มเติมที่ช่วยให้ TFMA คำนวณเมตริกการประเมินเดียวกันที่กำหนดไว้ในโมเดลในลักษณะแบบกระจายผ่านข้อมูลจำนวนมากและที่ผู้ใช้กำหนด ชิ้น
ปรับเปลี่ยนโมเดลที่มีอยู่
หากต้องการใช้โมเดลที่มีอยู่กับ TFMA ให้แก้ไขโมเดลเพื่อส่งออก EvalSavedModel
ก่อน ซึ่งทำได้โดยเพิ่มการเรียกไปที่ tfma.export.export_eval_savedmodel
และคล้ายกับ estimator.export_savedmodel
ตัวอย่างเช่น:
# 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
และคล้ายกับ serving_input_receiver_fn
สำหรับ estimator.export_savedmodel
เช่นเดียวกับ serving_input_receiver_fn
ฟังก์ชัน eval_input_receiver_fn
จะกำหนดตัวอย่างตัวยึดตำแหน่งอินพุต แยกวิเคราะห์คุณลักษณะจากตัวอย่าง และส่งคืนคุณลักษณะที่แยกวิเคราะห์ แยกวิเคราะห์และส่งคืนป้ายกำกับ
ตัวอย่างต่อไปนี้กำหนดตัวอย่าง 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'])
ในตัวอย่างนี้ คุณจะเห็นว่า:
-
labels
ยังสามารถเป็นพจนานุกรมได้ มีประโยชน์สำหรับรุ่นหลายหัว - ฟังก์ชัน
eval_input_receiver_fn
มักจะเหมือนกับฟังก์ชันserving_input_receiver_fn
ของคุณ แต่ในบางกรณี คุณอาจต้องการกำหนดคุณลักษณะเพิ่มเติมสำหรับการแบ่งส่วน ตัวอย่างเช่น คุณแนะนำฟีเจอร์age_category
ซึ่งแบ่งฟีเจอร์age
ออกเป็นหลายกลุ่ม จากนั้น คุณสามารถแบ่งส่วนคุณลักษณะนี้ใน TFMA เพื่อช่วยให้เข้าใจว่าประสิทธิภาพของโมเดลของคุณแตกต่างกันอย่างไรตามหมวดหมู่อายุต่างๆ
การเพิ่มเมตริกหลังการส่งออก
คุณสามารถเพิ่มเมตริกเพิ่มเติมที่ไม่รวมอยู่ในโมเดลได้โดยใช้ add_metrics_callbacks
สำหรับรายละเอียดเพิ่มเติม โปรดดูวิธีใช้ Python สำหรับ run_model_analysis
ตัวอย่างตั้งแต่ต้นจนจบ
ลองใช้ ตัวอย่างตั้งแต่ต้นจนจบ ซึ่งมี TensorFlow Transform สำหรับการประมวลผลฟีเจอร์ล่วงหน้า, TensorFlow Estimators สำหรับการฝึก, การวิเคราะห์โมเดล TensorFlow และ Jupyter สำหรับการประเมินผล และ TensorFlow Serving สำหรับการให้บริการ
การเพิ่มเมตริกการส่งออกโพสต์ที่กำหนดเอง
หากคุณต้องการเพิ่มเมตริกหลังการส่งออกที่กำหนดเองใน TFMA โปรดอ่านเอกสารประกอบ ที่นี่