打印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(阅读本教程了解更多详细信息),在TensorBoard中可视化损失的演变。

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

最新更新