【Tensorboard】Windows下tensorflow的tensorboard的使用

以下文章转载自:http://blog.csdn.net/bill_zhang5/article/details/69283353(Bill_zhang5)

最近在学习Tensorflow中的tensoboard的可视化,但是怎么都无法实现,按照教程,我在网上查找了一些资料,我尝试很多种方法,教程中是在Linux中实现的,文件路径与Windows不一样,下面我以官方给出教程为例,指出在Window下要修改的地方:

[html] view plain copy
  1. from __future__ import absolute_import  
  2. from __future__ import division  
  3. from __future__ import print_function  
  4.   
  5. import argparse  
  6. import sys  
  7.   
  8. import tensorflow as tf  
  9.   
  10. from tensorflow.examples.tutorials.mnist import input_data  
  11.   
  12. FLAGS = None  
  13.   
  14.   
  15. def train():  
  16.   # Import data  
  17.   mnist = input_data.read_data_sets(FLAGS.data_dir,  
  18.                                     one_hot=True,  
  19.                                     fake_data=FLAGS.fake_data)  
  20.   
  21.   sess = tf.InteractiveSession()  
  22.   # Create a multilayer model.  
  23.   
  24.   # Input placeholders  
  25.   with tf.name_scope('input'):  
  26.     x = tf.placeholder(tf.float32, [None, 784], name='x-input')  
  27.     y_ = tf.placeholder(tf.float32, [None, 10], name='y-input')  
  28.   
  29.   with tf.name_scope('input_reshape'):  
  30.     image_shaped_input = tf.reshape(x, [-1, 28, 28, 1])  
  31.     tf.summary.image('input', image_shaped_input, 10)  
  32.   
  33.   # We can't initialize these variables to 0 - the network will get stuck.  
  34.   def weight_variable(shape):  
  35.     """Create a weight variable with appropriate initialization."""  
  36.     initial = tf.truncated_normal(shape, stddev=0.1)  
  37.     return tf.Variable(initial)  
  38.   
  39.   def bias_variable(shape):  
  40.     """Create a bias variable with appropriate initialization."""  
  41.     initial = tf.constant(0.1, shape=shape)  
  42.     return tf.Variable(initial)  
  43.   
  44.   def variable_summaries(var):  
  45.     """Attach a lot of summaries to a Tensor (for TensorBoard visualization)."""  
  46.     with tf.name_scope('summaries'):  
  47.       mean = tf.reduce_mean(var)  
  48.       tf.summary.scalar('mean', mean)  
  49.       with tf.name_scope('stddev'):  
  50.         stddev = tf.sqrt(tf.reduce_mean(tf.square(var - mean)))  
  51.       tf.summary.scalar('stddev', stddev)  
  52.       tf.summary.scalar('max', tf.reduce_max(var))  
  53.       tf.summary.scalar('min', tf.reduce_min(var))  
  54.       tf.summary.histogram('histogram', var)  
  55.   
  56.   def nn_layer(input_tensor, input_dim, output_dim, layer_name, act=tf.nn.relu):  
  57.     """Reusable code for making a simple neural net layer.  
  58.     It does a matrix multiply, bias add, and then uses relu to nonlinearize.  
  59.     It also sets up name scoping so that the resultant graph is easy to read,  
  60.     and adds a number of summary ops.  
  61.     """  
  62.     # Adding a name scope ensures logical grouping of the layers in the graph.  
  63.     with tf.name_scope(layer_name):  
  64.       # This Variable will hold the state of the weights for the layer  
  65.       with tf.name_scope('weights'):  
  66.         weights = weight_variable([input_dim, output_dim])  
  67.         variable_summaries(weights)  
  68.       with tf.name_scope('biases'):  
  69.         biases = bias_variable([output_dim])  
  70.         variable_summaries(biases)  
  71.       with tf.name_scope('Wx_plus_b'):  
  72.         preactivate = tf.matmul(input_tensor, weights) + biases  
  73.         tf.summary.histogram('pre_activations', preactivate)  
  74.       activations = act(preactivate, name='activation')  
  75.       tf.summary.histogram('activations', activations)  
  76.       return activations  
  77.   
  78.   hidden1 = nn_layer(x, 784, 500, 'layer1')  
  79.   
  80.   with tf.name_scope('dropout'):  
  81.     keep_prob = tf.placeholder(tf.float32)  
  82.     tf.summary.scalar('dropout_keep_probability', keep_prob)  
  83.     dropped = tf.nn.dropout(hidden1, keep_prob)  
  84.   
  85.   # Do not apply softmax activation yet, see below.  
  86.   y = nn_layer(dropped, 500, 10, 'layer2', act=tf.identity)  
  87.   
  88.   with tf.name_scope('cross_entropy'):  
  89.     # The raw formulation of cross-entropy,  
  90.     #  
  91.     # tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(tf.softmax(y)),  
  92.     #                               reduction_indices=[1]))  
  93.     #  
  94.     # can be numerically unstable.  
  95.     #  
  96.     # So here we use tf.nn.softmax_cross_entropy_with_logits on the  
  97.     # raw outputs of the nn_layer above, and then average across  
  98.     # the batch.  
  99.     diff = tf.nn.softmax_cross_entropy_with_logits(labels=y_logits=y)  
  100.     with tf.name_scope('total'):  
  101.       cross_entropy = tf.reduce_mean(diff)  
  102.   tf.summary.scalar('cross_entropy', cross_entropy)  
  103.   
  104.   with tf.name_scope('train'):  
  105.     train_step = tf.train.AdamOptimizer(FLAGS.learning_rate).minimize(  
  106.         cross_entropy)  
  107.   
  108.   with tf.name_scope('accuracy'):  
  109.     with tf.name_scope('correct_prediction'):  
  110.       correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))  
  111.     with tf.name_scope('accuracy'):  
  112.       accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))  
  113.   tf.summary.scalar('accuracy', accuracy)  
  114.   
  115.   # Merge all the summaries and write them out to /tmp/tensorflow/mnist/logs/mnist_with_summaries (by default)  
  116.   merged = tf.summary.merge_all()  
  117.   train_writer = tf.summary.FileWriter(FLAGS.log_dir + '/train', sess.graph)  
  118.   test_writer = tf.summary.FileWriter(FLAGS.log_dir + '/test')  
  119.   tf.global_variables_initializer().run()  
  120.   
  121.   # Train the model, and also write summaries.  
  122.   # Every 10th step, measure test-set accuracy, and write test summaries  
  123.   # All other steps, run train_step on training data, & add training summaries  
  124.   
  125.   def feed_dict(train):  
  126.     """Make a TensorFlow feed_dict: maps data onto Tensor placeholders."""  
  127.     if train or FLAGS.fake_data:  
  128.       xs, ys = mnist.train.next_batch(100, fake_data=FLAGS.fake_data)  
  129.       k = FLAGS.dropout  
  130.     else:  
  131.       xs, ys = mnist.test.images, mnist.test.labels  
  132.       k = 1.0  
  133.     return {x: xs, y_: ys, keep_prob: k}  
  134.   
  135.   for i in range(FLAGS.max_steps):  
  136.     if i % 10 == 0:  # Record summaries and test-set accuracy  
  137.       summary, acc = sess.run([merged, accuracy], feed_dict=feed_dict(False))  
  138.       test_writer.add_summary(summary, i)  
  139.       print('Accuracy at step %s: %s' % (i, acc))  
  140.     else:  # Record train set summaries, and train  
  141.       if i % 100 == 99:  # Record execution stats  
  142.         run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)  
  143.         run_metadata = tf.RunMetadata()  
  144.         summary, _ = sess.run([merged, train_step],  
  145.                               feed_dict=feed_dict(True),  
  146.                               options=run_options,  
  147.                               run_metadata=run_metadata)  
  148.         train_writer.add_run_metadata(run_metadata, 'step%03d' % i)  
  149.         train_writer.add_summary(summary, i)  
  150.         print('Adding run metadata for', i)  
  151.       else:  # Record a summary  
  152.         summary, _ = sess.run([merged, train_step], feed_dict=feed_dict(True))  
  153.         train_writer.add_summary(summary, i)  
  154.   train_writer.close()  
  155.   test_writer.close()  
  156.   
  157.   
  158. def main(_):  
  159.   if tf.gfile.Exists(FLAGS.log_dir):  
  160.     tf.gfile.DeleteRecursively(FLAGS.log_dir)  
  161.   tf.gfile.MakeDirs(FLAGS.log_dir)  
  162.   train()  
  163.   
  164.   
  165. if __name__ == '__main__':  
  166.   parser = argparse.ArgumentParser()  
  167.   parser.add_argument('--fake_data', nargs='?'const=Truetype=bool,  
  168.                       default=False,  
  169.                       help='If true, uses fake data for unit testing.')  
  170.   parser.add_argument('--max_steps', type=intdefault=1000,  
  171.                       help='Number of steps to run trainer.')  
  172.   parser.add_argument('--learning_rate', type=floatdefault=0.001,  
  173.                       help='Initial learning rate')  
  174.   parser.add_argument('--dropout', type=floatdefault=0.9,  
  175.                       help='Keep probability for training dropout.')  
  176.   parser.add_argument('--data_dir', type=strdefault='/tmp/tensorflow/mnist/input_data',  
  177.                       help='Directory for storing input data')  
  178.   parser.add_argument('--log_dir', type=strdefault='/tmp/tensorflow/mnist/logs/mnist_with_summaries',  
  179.                       help='Summaries log directory')  
  180.   FLAGS, unparsed = parser.parse_known_args()  
  181.   tf.app.run(main=mainargv=[sys.argv[0]] + unparsed)  

上面是官方给出的例子实现,下面我给出要修改的地方:

[html] view plain copy
  1. parser.add_argument('--log_dir', type=strdefault='/tmp/tensorflow/mnist/logs/mnist_with_summaries',  
  2.                      help='Summaries log directory')  
修改后的代码:
parser.add_argument('--log_dir', type=str, default='C:/tmp/tensorflow/mnist/logs/mnist_with_summaries',
                      help='Summaries log directory')

这里目录取决你放在哪个盘,这里我放在C盘,打开cmd。在终端输入,如下图:

[html] view plain copy
  1. tensorboard --logdirC:\tmp\tensorflow\mnist\logs\mnist_with_summaries  
[html] view plain copy
  1.   
[html] view plain copy
  1. <img src="https://img-blog.csdn.net/20170405190250809?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQmlsbF96aGFuZzU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">  
打开Google Chrome输入localhost:6006,结果如下图:


发布了392 篇原创文章 · 获赞 492 · 访问量 241万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览