我在Jupyter笔记本中执行以下代码
import tensorflow as tf
# Parameters
learning_rate = 0.01
training_epochs = 25
display_step = 1
# tf Graph Input
x = tf.placeholder("float", [None, dims])
y = tf.placeholder("float", [None, nb_classes])
# Construct (linear) model
with tf.name_scope("model") as scope:
# Set model weights
W = tf.Variable(tf.zeros([dims, nb_classes]))
b = tf.Variable(tf.zeros([nb_classes]))
activation = tf.nn.softmax(tf.matmul(x, W) + b) # Softmax
# Add summary ops to collect data
w_h = tf.summary.histogram("weights_histogram", W)
b_h = tf.summary.histogram("biases_histograms", b)
tf.summary.scalar('mean_weights', tf.reduce_mean(W))
tf.summary.scalar('mean_bias', tf.reduce_mean(b))
# Minimize error using cross entropy
# Note: More name scopes will clean up graph representation
with tf.name_scope("cost_function") as scope:
cross_entropy = y*tf.log(activation)
cost = tf.reduce_mean(-tf.reduce_sum(cross_entropy,reduction_indices=1))
# Create a summary to monitor the cost function
tf.summary.scalar("cost_function", cost)
tf.summary.histogram("cost_histogram", cost)
with tf.name_scope("train") as scope:
# Set the Optimizer
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
with tf.name_scope('Accuracy') as scope:
correct_prediction = tf.equal(tf.argmax(activation, 1), tf.argmax(y, 1))
# Calculate accuracy
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
# Create a summary to monitor the cost function
tf.summary.scalar("accuracy", accuracy)
LOGDIR = '/tmp/logistic_logs'
import os, shutil
if os.path.isdir(LOGDIR):
shutil.rmtree(LOGDIR)
os.mkdir(LOGDIR)
# Plug TensorBoard Visualisation
writer = tf.summary.FileWriter(LOGDIR, graph=tf.get_default_graph())
for var in tf.get_collection(tf.GraphKeys.SUMMARIES):
print(var.name)
summary_op = tf.summary.merge_all()
print('Summary Op: ' + summary_op)
# Launch the graph
with tf.Session() as session:
# Initializing the variables
session.run(tf.global_variables_initializer())
cost_epochs = []
# Training cycle
for epoch in range(training_epochs):
_, summary, c = session.run(fetches=[optimizer, summary_op, cost],
feed_dict={x: X_train, y: Y_train})
cost_epochs.append(c)
writer.add_summary(summary=summary, global_step=epoch)
print("accuracy epoch {}:{}".format(epoch, accuracy.eval({x: X_train, y: Y_train})))
print("Training phase finished")
#plotting
plt.plot(range(len(cost_epochs)), cost_epochs, 'o', label='Logistic Regression Training phase')
plt.ylabel('cost')
plt.xlabel('epoch')
plt.legend()
plt.show()
prediction = tf.argmax(activation, 1)
print(prediction.eval({x: X_test}))
%%bash
tensorboard --logdir=/tmp/logistic_logs
当我执行tensorboard命令时,我没有得到任何标量,图形等。它只是加载tensorboard仪表板。例如,对于图,我得到:"No graph definition files were found."
答案 0 :(得分:0)
我在Jupyter Notebook所在的目录中手动创建了一个名为logistic_logs
的目录,然后运行以下代码。这对我有用:
import tensorflow as tf
# Parameters
learning_rate = 0.01
training_epochs = 25
display_step = 1
dims = 3
nb_classes = 2
tf.reset_default_graph()
# tf Graph Input
x = tf.placeholder("float", [None, dims])
y = tf.placeholder("float", [None, nb_classes])
# Construct (linear) model
with tf.name_scope("model") as scope:
# Set model weights
W = tf.Variable(tf.zeros([dims, nb_classes]))
b = tf.Variable(tf.zeros([nb_classes]))
activation = tf.nn.softmax(tf.matmul(x, W) + b) # Softmax
# Add summary ops to collect data
w_h = tf.summary.histogram("weights_histogram", W)
b_h = tf.summary.histogram("biases_histograms", b)
tf.summary.scalar('mean_weights', tf.reduce_mean(W))
tf.summary.scalar('mean_bias', tf.reduce_mean(b))
# Minimize error using cross entropy
# Note: More name scopes will clean up graph representation
with tf.name_scope("cost_function") as scope:
cross_entropy = y*tf.log(activation)
cost = tf.reduce_mean(-tf.reduce_sum(cross_entropy,reduction_indices=1))
# Create a summary to monitor the cost function
tf.summary.scalar("cost_function", cost)
tf.summary.histogram("cost_histogram", cost)
with tf.name_scope("train") as scope:
# Set the Optimizer
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
with tf.name_scope('Accuracy') as scope:
correct_prediction = tf.equal(tf.argmax(activation, 1), tf.argmax(y, 1))
# Calculate accuracy
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
# Create a summary to monitor the cost function
tf.summary.scalar("accuracy", accuracy)
# Plug TensorBoard Visualisation
writer = tf.summary.FileWriter("logistic_logs", graph=tf.get_default_graph())
for var in tf.get_collection(tf.GraphKeys.SUMMARIES):
print(var.name)
summary_op = tf.summary.merge_all()
print('Summary Op: ' + summary_op)
# Launch the graph
with tf.Session() as session:
# Initializing the variables
session.run(tf.global_variables_initializer())
writer.add_graph(session.graph)
请注意,问题可能在于您在构建图形之前未重置默认图形。第一次执行代码时,便已经构建了默认图形,因此不要忘记在构建默认图形之前总是重置它。我的代码中的这一行处理以下问题:
tf.reset_default_graph()
然后,运行:
tensorboard --logdir=logistic_logs/