- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可以在每个全局步骤中获得训练损失。但我确实想在张量板的“lossxx”图中添加评估损失。怎么做?
类 MyHook(tf.train.SessionRunHook):
def after_run(self,run_context,run_value):
_session = run_context.session
_session.run(_session.graph.get_operation_by_name('acc_op'))
def my_model(功能,标签,模式):
...
logits = tf.layers.dense(net, 3, activation=None)
预测类 = tf.argmax(logits, 1)
如果模式 == tf.estimator.ModeKeys.PREDICT:
预测 = {
“类”:预测类,
'概率':tf.nn.softmax(logits)
}
返回 tf.estimator.EstimatorSpec(模式,预测=预测)
# 计算损失。
损失 = tf.losses.sparse_softmax_cross_entropy(labels=labels, logits=logits)
acc,acc_op = tf.metrics.accuracy(标签=标签,预测=predicted_classes)
tf.identity(acc_op,'acc_op')
loss_sum = tf.summary.scalar('lossxx',loss)
精度_和 = tf.summary.scalar('accuracyxx',acc)
合并 = tf.summary.merge_all()
# 创建训练操作。
如果模式 == tf.estimator.ModeKeys.TRAIN:
优化器 = tf.train.AdagradOptimizer(learning_rate=0.1)
train_op = optimizer.minimize(loss, global_step=tf.train.get_global_step())
返回 tf.estimator.EstimatorSpec(mode, loss=loss, train_op=train_op,
training_chief_hooks=[
tf.train.SummarySaverHook(save_steps=10, output_dir='./model', summary_op=merg)])
返回 tf.estimator.EstimatorSpec(
模式,损失=损失,eval_metric_ops={'accuracy': (acc, acc_op)}
)
分类器.train(input_fn=train_input_fn,steps=1000,hooks=[MyHook()])
最佳答案
您实际上不需要创建 SummarySaverHook
由您自己决定,因为它已包含在 tf.estimator.Estimator
中.只需使用 tf.summary.xxx
创建您想要的所有摘要并且它们都将每 n
评估一次脚步。 (有关此信息,请参阅 tf.estimator.RunConfig
)。
此外,您无需为最终损失创建摘要 loss
.这也将自动为您创建。如果你这样做,那么训练和评估摘要将显示在 TensorBoard 的同一个图表中。估算器创建一个子目录 eval
在您当前 model_dir
为达到这个。
还有一个小提示:使用 acc_op
直接在摘要中更新指标 和 得到它的值(value)。然而,tf.metrics
功能很难处理;-)
关于tensorflow - 如何在 Tensorflow Estimator 的每个全局步骤中获得训练损失和评估损失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48057189/
我是一名优秀的程序员,十分优秀!