问题描述
我试图在张量板上绘制每秒评估指标。我试图创建一个会话挂钩来计算指标。以下是我的代码:
class EstimatorValidationStepPerSecCallBack(tf.estimator.SessionRunHook):
def __init__(self,log_dir: str,update_freq: int):
self.steps = 0
self.update_freq = update_freq
self.begin_time = None
validation_summary_dir = os.path.join(log_dir,"validation")
self.validation_summary_writer = tf.summary.create_file_writer(os.path.join(log_dir,"validation"))
# self.validation_summary_writer = tf.compat.v1.summary.FileWriter(logdir=validation_summary_dir)
@overrides
def before_run(self,run_context):
if not self.begin_time:
self.begin_time = time.time()
self.steps += 1
print("YYL hook step")
print(self.steps)
@overrides
def after_run(self,run_context,run_values):
if self.steps % self.update_freq == 0:
current_time = time.time()
global_steps_per_sec = self.update_freq / (current_time - self.begin_time)
self.begin_time = current_time
with self.validation_summary_writer.as_default():
tf.summary.scalar("eval_step/sec",eval_step_per_sec)
这是我将其传递给评估规范的方式:
eval_spec = tf.estimator.EvalSpec(input_fn=data_fn,steps=100,hooks=[EstimatorValidationStepPerSecCallBack(log_dir=summary_dir,update_freq=50)])
tf.estimator.train_and_evaluate(model,train_spec,eval_spec)
最后,我将收到以下错误:
"""
if self._finalized:
> raise RuntimeError("Graph is finalized and cannot be modified.")
E RuntimeError: Graph is finalized and cannot be modified.
我想知道是否有解决此问题的方法?如果不是,是否还有另一种方法可以在张量板上绘制该度量?感谢您的潜在帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)