Tensorflow contrib.summary API-第n个步骤记录标量无法正常工作

时间:2019-06-24 15:25:34

标签: python tensorflow

最近我已经开始使用TensorBoard进行游戏了。首先,我只是想对损失函数进行几百步的简单可视化。为此,我想使用tf.contrib.summary API。

我的代码除了有点烦人之外还可以工作-假设我要执行250个步骤的优化程序,并且要记录每一个步骤的损失,因此,我将执行类似的操作(一些代码段是缺少)。

graph = tf.Graph()
sess = tf.Session(graph=graph)

with sess.graph.as_default():
    ... # lines that define the computation graph as well as input dataset and predictions
    global_step = tf.train.create_global_step()

    rmse = tf.math.sqrt(tf.losses.mean_squared_error(labels=Y, predictions=Y_PRED))
    optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(rmse, global_step=global_step)

    # create summary writer, tensor for recording scalar and initialize everything
    summary_writer = tf.contrib.summary.create_file_writer(args.logdir, flush_millis=10 * 1000)
    summaries = {}

    with summary_writer.as_default(), tf.contrib.summary.always_record_summaries():
        summaries["train_rmse"] = tf.contrib.summary.scalar("train/RMSE", rmse)

    sess.run(tf.global_variables_initializer())
    with summary_writer.as_default():
        tf.contrib.summary.initialize(session=sess, graph=graph)

for i in range(250):
    train_X_batch, train_Y_batch = # ... retrieve batch of data from dataset
    sess.run(optimizer, feed_dict={X : train_X_batch, Y : train_Y_batch})
    sess.run(summaries["train_rmse"], {X: train_X, Y: train_Y})

但是当我这样做之后,然后在张量板上可视化结果时,我的train_rmse只记录了241次,而不是我使用tf.contrib.summary.always_record_summaries()时记录的250次,对吗? (参见图片)。

enter image description here

此问题似乎与数据有关。当我在mnist数据集上尝试类似的事物并尝试以相同数量的步数记录一些标量时,记录的步数约为200。

我试图在tensorflow文档中找到答案,但没有成功。我还检查了诸如250个步骤没有足够数据的情况-这应该不是问题。

另一件事是,即使我使用record_summaries_every_n_global_steps(n)调用,也会发生这种情况。例如,使用n = 5调用它只会记录直到第215步的步骤。

有人可以帮我吗?

0 个答案:

没有答案