Tensorflow 对汇总求平均值并使用SummaryWriter保存平均值

Tensorflow 对汇总求平均值并使用SummaryWriter保存平均值,tensorflow,tensorboard,Tensorflow,Tensorboard,我在tensor flow中有一个模型,希望在开发集上评估当前模型。但是,这个集合太大,无法在一个步骤中进行评估,所以我将它分为不同的批。每一个都有一个准确度、损失等,以代替保存最终批次的摘要,如下例所示,我想保存所有这些统计数据的平均值,以便在TensorBoard中绘图 既然输出摘要是一个不可读的字符串,我可以将其加载到tf.summary对象中,但我无法从中创建字符串,那么该怎么做呢 summary = tf.Summary() for batch in batches: x_ba

我在tensor flow中有一个模型,希望在开发集上评估当前模型。但是,这个集合太大,无法在一个步骤中进行评估,所以我将它分为不同的批。每一个都有一个准确度、损失等,以代替保存最终批次的摘要,如下例所示,我想保存所有这些统计数据的平均值,以便在TensorBoard中绘图

既然输出摘要是一个不可读的字符串,我可以将其加载到
tf.summary
对象中,但我无法从中创建字符串,那么该怎么做呢

summary = tf.Summary()
for batch in batches:
    x_batch, y_batch = zip(*batch)
    feed_dict = { cnn.input_x: x_batch, cnn.input_y: y_batch, cnn.keep_prob: 1.0 }

    step, summaries, loss, accuracy, mae = sess.run(
        [global_step, dev_summary_op, cnn.loss, cnn.accuracy, cnn.mae],
        feed_dict)
    loss_vector.append(loss)
    accuracy_vector.append(accuracy)
    mae_vector.append(mae)
    # read data into Summary object
    summary.MergeFromString(summaries)
time_str = datetime.datetime.now().isoformat()
loss, accuracy, mae = np.mean(loss_vector), np.mean(accuracy_vector), np.mean(mae_vector)
print("{}: step {}, loss {:g}, acc {:g}, MAE {:g}".format(time_str, step, loss, accuracy, mae))
if writer:
    # unable to use writer.add_summary(summary, step), does not plot in tensorboard....
    writer.add_summary(summaries, step) # saves only last one :(

您可以添加一个占位符,并使用tf.assign()指定批次的平均精度。您可以添加一个占位符,并使用tf.assign()指定批次的平均精度