张量流合同摘要每n步记录标量的API不能正常工作

2024-04-25 17:44:11 发布

您现在位置:Python中文网/ 问答频道 /正文

最近我开始玩张力板。首先,我只想做一个简单的可视化的损失函数超过几百步。为此,我想使用tf.contrib.summaryAPI。你知道吗

我的代码可以正常工作,只是有点麻烦——假设我想执行250个optimizer步骤,并且我想记录每个步骤的损失,所以,我会这样做(缺少一些代码块)。你知道吗

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})

但是当我这样做,然后在tensorboard中可视化结果时,我的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步的步骤。你知道吗

谁能帮我一下吗?你知道吗


Tags: tfasstepbatch记录步骤trainsummary