我使用Tensorflow api tf.estimator
来训练和评估模型,按照in this blog的说明构建自定义估算工具,并以这种方便的方式运行流程:
run_config = tf.estimator.RunConfig(save_checkpoints_secs=save_interval_secs,
keep_checkpoint_max=keep_checkpoint_max,
save_summary_steps=save_summary_steps,
model_dir=logdir)
estimator = tf.estimator.Estimator(model_fn=model_fn,
config=run_config)
train_spec = tf.estimator.TrainSpec(input_fn=train_input_fn, max_steps=train_steps)
eval_spec = tf.estimator.EvalSpec(input_fn=eval_input_fn, steps=eval_steps, throttle_secs=eval_interval_secs)
tf.estimator.train_and_evaluate(estimator, train_spec, eval_spec)
此过程非常有效地培训和监控tf.metrics
指标到Tensorboard(例如tf.metrics.accuracy
)。
对于我的一个项目,我想添加一些来自独立python函数的更多(复杂)指标,并在Tensorboard中可视化它们。该函数将训练logdir作为参数(加载模型并在数据上运行),并将一些标量(或张量)返回到Tensorboard中。
最后但并非最不重要的是,该函数需要GPU资源,因此我希望在评估后调用此函数:
Train xx steps => Evaluation xx steps => Custom metrics => Train xx steps => ...
我正在考虑使用tf.summary.FileWriter
和/或训练挂钩(请参阅Tensorflow documentation),但我不知道如何使用tf.estimator
api以直截了当的方式使用它们。
非常感谢你的帮助!
微米。