gpt4 book ai didi

tensorflow - 如何在 Tensorflow Estimator 的每个全局步骤中获得训练损失和评估损失?

转载 作者:行者123 更新时间:2023-12-05 00:13:51 25 4
gpt4 key购买 nike

我可以在每个全局步骤中获得训练损失。但我确实想在张量板的“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()])

enter image description here

最佳答案

您实际上不需要创建 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com