tensorflow - Mlflow:使用 Tensorflow train_and_evaluate 在评估阶段记录步骤
问题描述
我正在尝试使用 Mlflow 记录评估期间的步骤,但只能记录最后一步。使用 mlflow.tensorflow.autolog() 我可以在保存检查点时记录一些指标(如丢失),每 100 个步骤在 RunConfig 中定义。但是,我还需要每评估模型 100 步保存一次准确度和 top3error。这是我的代码:
def top3error(features, labels, predictions):
return {'top3error': tf.metrics.mean(tf.nn.in_top_k(predictions=predictions['logits'],
targets=labels,
k=3))}
# Log metrics
mlflow.tensorflow.autolog()
with mlflow.start_run():
steps = 1000
mlflow.log_param("Steps", steps)
'''Training & Validation'''
train_spec = tf.estimator.TrainSpec(input_fn=generate_input_fn(train),
max_steps=steps)
eval_spec = tf.estimator.EvalSpec(name='validation',
input_fn=generate_input_fn(test, num_epochs=1))
tf.logging.info("Starting Run...")
results = tf.estimator.train_and_evaluate(m, train_spec, eval_spec)
'''Log Run'''
mlflow.log_metric("accuracy", results[0]['accuracy'])
mlflow.log_metric("top3error", results[0]['top3error'])
这是模型中使用的 RunConfig:
config=tf.estimator.RunConfig(
model_dir=model_dir,
save_checkpoints_steps=100,
)
提前致谢
解决方案
您可以通过指定要登录 Estimator 的指标来实现此目的。除非您使用某种训练循环并迭代步骤,否则您将无法直接执行此操作。
推荐阅读
- r - 如何提取包含在“$”和“/”(特殊字符)之间的子字符串,然后替换该子字符串的值?
- php - PHP - 处理自动下载文件的 URL
- batch-file - 制作批量免打扰助手
- android - 当我在android studio中打开xml文件时,android studio突然关闭
- r - 如何标记三元 CCA?
- java - 使用 JAVA 的规范化器 XML
- vb.net - 将二进制字符串转换为十六进制字符串
- php - 如何修复编辑界面在 Laravel 5.7 中仅获取表中列的第一个单词?
- html - 是否可以根据属性名称调整输入字段宽度
- elasticsearch - Elasticsearch Completion Suggester:真正的标记化可能吗?