我想创建一个类似于使用tf.metrics及其update_op值可以获得的操作。在tf中执行此操作时:
acc, update_op = tf.metrics.accuracy(tf.argmax(probs, 1), labels, name="accuracy")
update_op 值在每次调用中都会更新。
所以我想对损失做同样的事情。我尝试了以下代码: update_loss = tf.Variable(0。,name =“ loss”)
loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=model.logits, labels=labels))
update_loss.assign(update_loss + loss)
但是我总是跑:
init_vars = [tf.local_variables_initializer(),
tf.global_variables_initializer()]
with tf.Session() as sess:
loss_val = sess.run(update_loss)
我得到的值为0。知道吗?
我必须指出,在执行过程中张量 loss 的值不为零
答案 0 :(得分:0)
好吧,我发现了一个可行的解决方案,该解决方案可以工作,但并不能真正解决我的疑问……基于this post(5.2 Tensorflow-批处理精度 )
它包括创建一个使用最后获得的损失值的函数,并通过feed_dict将其传递给函数,该函数使用累计值更新占位符:
session.run(tf_metric_update, feed_dict=feed_dict)