无法在 tensorboard 中使用 summary.merge 进行单独的训练和评估摘要
Unable to use summary.merge in tensorboard for separate training and evaluation summaries
我正在尝试使用 tensorboard 来观察卷积神经网络的学习。我很好地使用 tf.summary.merge_all 函数来创建合并摘要。但是,我想跟踪训练和测试数据的准确性和损失。这个post有用:Logging training and validation loss in tensorboard.
为了让事情更容易处理,我想将我的摘要合并成两个合并的摘要,一个用于训练,一个用于验证。(我最终会添加更多的东西,比如图像权重等)我试着按照来自 tensorboard tf.summary.merge 的描述。我无法让它工作,我找不到任何工作示例来帮助我理解我哪里出错了。
with tf.name_scope('accuracy'):
correct_prediction = tf.equal(tf.argmax(y_logits, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, 'float'))
tf.summary.scalar('accuracy', accuracy)
tf.summary.scalar('train_accuracy', accuracy)
with tf.name_scope('Cost'):
cross_entropy = tf.reduce_mean(
tf.nn.softmax_cross_entropy_with_logits(logits=y_logits, labels=y))
opt = tf.train.AdamOptimizer()
optimizer = opt.minimize(cross_entropy)
grads = opt.compute_gradients(cross_entropy, [b_fc_loc2])
tf.summary.scalar('cost', cross_entropy)
tf.summary.scalar('train_cost', cross_entropy)
with tf.Session() as sess:
writer = tf.summary.FileWriter('./logs/mnistlogs/1f', sess.graph)
sess.run(tf.global_variables_initializer())
merged = tf.summary.merge([cost, accuracy])
这会导致以下错误:
InvalidArgumentError (see above for traceback): Could not parse one of the summary inputs
[[Node: Merge/MergeSummary = MergeSummary[N=2, _device="/job:localhost/replica:0/task:0/cpu:0"](Merge/MergeSummary/inputs_0, Merge/MergeSummary/inputs_1)]]
我想知道为什么这不起作用,以及如何找到解决方案,感谢任何有效的示例。
我明白了。我需要在合并之前给出摘要名称。下面的代码解决了这个问题:
with tf.name_scope('Cost'):
cross_entropy = tf.reduce_mean(
tf.nn.softmax_cross_entropy_with_logits(logits=y_logits, labels=y))
opt = tf.train.AdamOptimizer(learning_rate=0.000003)
optimizer = opt.minimize(cross_entropy)
grads = opt.compute_gradients(cross_entropy, [b_fc_loc2])
cost_sum = tf.summary.scalar('val_cost', cross_entropy)
training_cost_sum = tf.summary.scalar('train_cost', cross_entropy)
with tf.name_scope('accuracy'):
correct_prediction = tf.equal(tf.argmax(y_logits, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, 'float'))
train_accuracy = accuracy
accuracy_sum = tf.summary.scalar('val_accuracy', accuracy)
training_accuracy_sum = tf.summary.scalar('train_accuracy', accuracy)
with tf.Session() as sess:
writer = tf.summary.FileWriter('./logs/{}/{}'.format(session_name, run_num), sess.graph)
sess.run(tf.global_variables_initializer())
train_merged = tf.summary.merge([training_accuracy_sum, training_cost_sum])
我正在尝试使用 tensorboard 来观察卷积神经网络的学习。我很好地使用 tf.summary.merge_all 函数来创建合并摘要。但是,我想跟踪训练和测试数据的准确性和损失。这个post有用:Logging training and validation loss in tensorboard.
为了让事情更容易处理,我想将我的摘要合并成两个合并的摘要,一个用于训练,一个用于验证。(我最终会添加更多的东西,比如图像权重等)我试着按照来自 tensorboard tf.summary.merge 的描述。我无法让它工作,我找不到任何工作示例来帮助我理解我哪里出错了。
with tf.name_scope('accuracy'):
correct_prediction = tf.equal(tf.argmax(y_logits, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, 'float'))
tf.summary.scalar('accuracy', accuracy)
tf.summary.scalar('train_accuracy', accuracy)
with tf.name_scope('Cost'):
cross_entropy = tf.reduce_mean(
tf.nn.softmax_cross_entropy_with_logits(logits=y_logits, labels=y))
opt = tf.train.AdamOptimizer()
optimizer = opt.minimize(cross_entropy)
grads = opt.compute_gradients(cross_entropy, [b_fc_loc2])
tf.summary.scalar('cost', cross_entropy)
tf.summary.scalar('train_cost', cross_entropy)
with tf.Session() as sess:
writer = tf.summary.FileWriter('./logs/mnistlogs/1f', sess.graph)
sess.run(tf.global_variables_initializer())
merged = tf.summary.merge([cost, accuracy])
这会导致以下错误:
InvalidArgumentError (see above for traceback): Could not parse one of the summary inputs [[Node: Merge/MergeSummary = MergeSummary[N=2, _device="/job:localhost/replica:0/task:0/cpu:0"](Merge/MergeSummary/inputs_0, Merge/MergeSummary/inputs_1)]]
我想知道为什么这不起作用,以及如何找到解决方案,感谢任何有效的示例。
我明白了。我需要在合并之前给出摘要名称。下面的代码解决了这个问题:
with tf.name_scope('Cost'):
cross_entropy = tf.reduce_mean(
tf.nn.softmax_cross_entropy_with_logits(logits=y_logits, labels=y))
opt = tf.train.AdamOptimizer(learning_rate=0.000003)
optimizer = opt.minimize(cross_entropy)
grads = opt.compute_gradients(cross_entropy, [b_fc_loc2])
cost_sum = tf.summary.scalar('val_cost', cross_entropy)
training_cost_sum = tf.summary.scalar('train_cost', cross_entropy)
with tf.name_scope('accuracy'):
correct_prediction = tf.equal(tf.argmax(y_logits, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, 'float'))
train_accuracy = accuracy
accuracy_sum = tf.summary.scalar('val_accuracy', accuracy)
training_accuracy_sum = tf.summary.scalar('train_accuracy', accuracy)
with tf.Session() as sess:
writer = tf.summary.FileWriter('./logs/{}/{}'.format(session_name, run_num), sess.graph)
sess.run(tf.global_variables_initializer())
train_merged = tf.summary.merge([training_accuracy_sum, training_cost_sum])