我正在使用以下代码来生成用于我的准确性和成本的标量图,但是标量摘要未显示在张量板上。它给我一个错误,说No scalar data was found
。有人可以看看吗?该模型的代码:
def train_neural_network(x):
prediction = convolutional_neural_network(x)
merged_summary_op = tf.summary.merge_all()
with tf.name_scope("cost"):
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=y))
optimizer = tf.train.AdamOptimizer(learning_rate=1e-3).minimize(cost)
tf.summary.scalar("cost", cost)
hm_epochs = 10
with tf.Session() as sess:
writer = tf.summary.FileWriter('C:/Thesis/Conv3d/69', sess.graph)
sess.run(tf.initialize_all_variables())
successful_runs = 0
total_runs = 0
for epoch in range(hm_epochs):
epoch_loss = 0
for data in train_data:
total_runs += 1
try:
X = data[0]
Y = data[1]
_, c = sess.run([optimizer, cost], feed_dict={x: X, y: Y})
writer.add_summary(summary, global_step=epoch)
epoch_loss += c
successful_runs += 1
except Exception as e:
pass
print('Epoch', epoch + 1, 'completed out of', hm_epochs, 'loss:', epoch_loss)
with tf.name_scope("accuracy"):
correct = tf.equal(tf.argmax(prediction, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct, 'float'))
tf.summary.scalar("accuracy", accuracy)
print('Accuracy:', accuracy.eval({x: [i[0] for i in validation_data], y: [i[1] for i in validation_data]}))
print('Done. Finishing accuracy:')
print('Accuracy:', accuracy.eval({x: [i[0] for i in validation_data], y: [i[1] for i in validation_data]}))
print('fitment percent:', successful_runs / total_runs)
答案 0 :(得分:0)
您需要在定义摘要操作后调用merge_all
。现在发生的事情是,该操作根本没有任何要摘要的内容(因为它首先被称为),而且不幸的是“不够聪明”,无法添加稍后定义的摘要操作。
请注意,我还“修复”了代码,因为您通常不应循环运行TF ops;我将所有准确性内容移到了训练循环之前。
def train_neural_network(x):
prediction = convolutional_neural_network(x)
with tf.name_scope("cost"):
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=y))
optimizer = tf.train.AdamOptimizer(learning_rate=1e-3).minimize(cost)
tf.summary.scalar("cost", cost)
with tf.name_scope("accuracy"):
correct = tf.equal(tf.argmax(prediction, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct, 'float'))
tf.summary.scalar("accuracy", accuracy)
merged_summary_op = tf.summary.merge_all()
hm_epochs = 10
with tf.Session() as sess:
writer = tf.summary.FileWriter('C:/Thesis/Conv3d/69', sess.graph)
sess.run(tf.initialize_all_variables())
successful_runs = 0
total_runs = 0
for epoch in range(hm_epochs):
epoch_loss = 0
for data in train_data:
total_runs += 1
try:
X = data[0]
Y = data[1]
_, c = sess.run([optimizer, cost], feed_dict={x: X, y: Y})
writer.add_summary(summary, global_step=epoch)
epoch_loss += c
successful_runs += 1
except Exception as e:
pass
print('Epoch', epoch + 1, 'completed out of', hm_epochs, 'loss:', epoch_loss)
print('Accuracy:', accuracy.eval({x: [i[0] for i in validation_data], y: [i[1] for i in validation_data]}))
print('Done. Finishing accuracy:')
print('Accuracy:', accuracy.eval({x: [i[0] for i in validation_data], y: [i[1] for i in validation_data]}))
print('fitment percent:', successful_runs / total_runs)