打印 TensorFlow 中优化器最小化的损失值

Printing the value of loss that is minimized by an optimizer in TensorFlow

我想打印已被优化器最小化的损失值。这是一个例子:

LEARNING_RATE = 0.0001
MOMENTUM = 0.999

mean_squared_error = tf.reduce_mean(tf.square(tf.sub(predictions, training_outputs)))
train_step = tf.train.MomentumOptimizer(LEARNING_RATE, MOMENTUM).minimize(mean_squared_error)

# Load data
features = ...
labels = ...

# Launch TensorFlow session
with tf.Session() as session:
    session.run(initialize)

    print("Begin training...")
    session.run(train_step, feed_dict={training_inputs: features, training_outputs: labels})
    print("Finished training! The mean squared error is: _____")

既然我已经最小化了 mean_squared_error,我该如何打印它的最小值?

可视化损失的最简单方法是创建它的标量摘要:

mean_squared_error = tf.reduce_mean(tf.square(tf.sub(predictions, training_outputs)))
loss_summ = tf.scalar_summary("loss", mean_squared_error)

然后您在 TensorFlow 会话中创建编写器,并将摘要 loss_summ 添加到 sess.run() 调用。然后您在 mse_val 中取回值并可以打印它。

with tf.Session() as session:
    writer = tf.train.SummaryWriter("log", session.graph_def)
    session.run(initialize)

    print("Begin training...")
    _, mse_val, summ = session.run([train_step, mean_squared_error, loss_summ], feed_dict={training_inputs: features, training_outputs: labels})
    writer.add_summary(summ)
    print("Finished training! The mean squared error is: %f" % mse_val)

作为奖励,您甚至可以通过 运行 tensorboard --logdir log(阅读 this tutorial 了解更多详细信息)可视化 TensorBoard 中损失的演变。

P.S:您的代码仅运行 1 次迭代训练,您可能需要添加一个循环。