Tensorboard显示空白,或者graphs中显示“No graph definition files were found”,在数据正确的前提下,最可能是路径的问题。 Windows 下通过cmd启动tensorboard,采用如下两种方法可以避免路径造成的问题(假设文件在D盘的logs文件夹下): 1.文件夹之间使用 // 分割

>tensorboard --logdir=D://logs

2.将路径直接切换到文件的上一级目录下

>cd D: >tensorboard --logdir=logs

在学习深度网络框架的过程中,我们发现一个问题,就是如何输出各层网络参数,用于更好地理解,调试和优化网络?针对这个问题,TensorFlow开发了一个特别有用的可视化工具包:TensorBoard,既可以显示网络结构,又可以显示训练和测试过程中各层参数的变化情况。本博文分为四个部分,第一部分介绍相关函数,第二部分是代码测试,第三部分是运行结果,第四部分介绍相关参考资料。


一. 相关函数

TensorBoard的输入是tensorflow保存summary data的日志文件。日志文件名的形式如:events.out.tfevents.1467809796.lei-All-Series 或 events.out.tfevents.1467809800.lei-All-Series。TensorBoard可读的summary data有scalar,images,audio,histogram和graph。那么怎么把这些summary data保存在日志文件中呢?

数值如学习率,损失函数用scalar_summary函数。tf.scalar_summary(节点名称,获取的数据)

[python] view plaincopy
  1. accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
  2. tf.scalar_summary('accuracy', accuracy)

各层网络权重,偏置的分布,用histogram_summary函数

[python] view plaincopy
  1. preactivate = tf.matmul(input_tensor, weights) + biases
  2. tf.histogram_summary(layer_name + '/pre_activations', preactivate)

其他几种summary data也是同样的方式获取,只是对应的获取函数名称换一下。这些获取summary data函数节点和graph是独立的,调用的时候也需要运行session。当需要获取的数据较多的时候,我们一个一个去保存获取到的数据,以及一个一个去运行会显得比较麻烦。tensorflow提供了一个简单的方法,就是合并所有的summary data的获取函数,保存和运行只对一个对象进行操作。比如,写入默认路径中,比如/tmp/mnist_logs (by default)

[python] view plaincopy
  1. merged = tf.merge_all_summaries()
  2. train_writer = tf.train.SummaryWriter(FLAGS.summaries_dir + '/train', sess.graph)
  3. test_writer = tf.train.SummaryWriter(FLAGS.summaries_dir + '/test')

SummaryWriter从tensorflow获取summary data,然后保存到指定路径的日志文件中。以上是在建立graph的过程中,接下来执行,每隔一定step,写入网络参数到默认路径中,形成最开始的文件:events.out.tfevents.1467809796.lei-All-Series 或 events.out.tfevents.1467809800.lei-All-Series。

[python] view plaincopy
  1. for i in range(FLAGS.max_steps):
  2. if i % 10 == 0:  # Record summaries and test-set accuracy
  3. summary, acc = sess.run([merged, accuracy], feed_dict=feed_dict(False))
  4. test_writer.add_summary(summary, i)
  5. print('Accuracy at step %s: %s' % (i, acc))
  6. else: # Record train set summarieis, and train
  7. summary, _ = sess.run([merged, train_step], feed_dict=feed_dict(True))
  8. train_writer.add_summary(summary, i)

二. 代码测试

[python] view plaincopy
  1. # Copyright 2015 Google Inc. All Rights Reserved.
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the 'License');
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. #     http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an 'AS IS' BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. # ==============================================================================
  15. """A simple MNIST classifier which displays summaries in TensorBoard.
  16. This is an unimpressive MNIST model, but it is a good example of using
  17. tf.name_scope to make a graph legible in the TensorBoard graph explorer, and of
  18. naming summary tags so that they are grouped meaningfully in TensorBoard.
  19. It demonstrates the functionality of every TensorBoard dashboard.
  20. """
  21. from __future__ import absolute_import
  22. from __future__ import division
  23. from __future__ import print_function
  24. import tensorflow as tf
  25. from tensorflow.examples.tutorials.mnist import input_data
  26. flags = tf.app.flags
  27. FLAGS = flags.FLAGS
  28. flags.DEFINE_boolean('fake_data', False, 'If true, uses fake data '
  29. 'for unit testing.')
  30. flags.DEFINE_integer('max_steps', 1000, 'Number of steps to run trainer.')
  31. flags.DEFINE_float('learning_rate', 0.001, 'Initial learning rate.')
  32. flags.DEFINE_float('dropout', 0.9, 'Keep probability for training dropout.')
  33. flags.DEFINE_string('data_dir', '/tmp/data', 'Directory for storing data')
  34. flags.DEFINE_string('summaries_dir', '/tmp/mnist_logs', 'Summaries directory')
  35. def train():
  36. # Import data
  37. mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True,
  38. fake_data=FLAGS.fake_data)
  39. sess = tf.InteractiveSession()
  40. # Create a multilayer model.
  41. # Input placehoolders
  42. with tf.name_scope('input'):
  43. x = tf.placeholder(tf.float32, [None, 784], name='x-input')
  44. image_shaped_input = tf.reshape(x, [-1, 28, 28, 1])
  45. tf.image_summary('input', image_shaped_input, 10)
  46. y_ = tf.placeholder(tf.float32, [None, 10], name='y-input')
  47. keep_prob = tf.placeholder(tf.float32)
  48. tf.scalar_summary('dropout_keep_probability', keep_prob)
  49. # We can't initialize these variables to 0 - the network will get stuck.
  50. def weight_variable(shape):
  51. """Create a weight variable with appropriate initialization."""
  52. initial = tf.truncated_normal(shape, stddev=0.1)
  53. return tf.Variable(initial)
  54. def bias_variable(shape):
  55. """Create a bias variable with appropriate initialization."""
  56. initial = tf.constant(0.1, shape=shape)
  57. return tf.Variable(initial)
  58. def variable_summaries(var, name):
  59. """Attach a lot of summaries to a Tensor."""
  60. with tf.name_scope('summaries'):
  61. mean = tf.reduce_mean(var)
  62. tf.scalar_summary('mean/' + name, mean)
  63. with tf.name_scope('stddev'):
  64. stddev = tf.sqrt(tf.reduce_sum(tf.square(var - mean)))
  65. tf.scalar_summary('sttdev/' + name, stddev)
  66. tf.scalar_summary('max/' + name, tf.reduce_max(var))
  67. tf.scalar_summary('min/' + name, tf.reduce_min(var))
  68. tf.histogram_summary(name, var)
  69. def nn_layer(input_tensor, input_dim, output_dim, layer_name, act=tf.nn.relu):
  70. """Reusable code for making a simple neural net layer.
  71. It does a matrix multiply, bias add, and then uses relu to nonlinearize.
  72. It also sets up name scoping so that the resultant graph is easy to read, and
  73. adds a number of summary ops.
  74. """
  75. # Adding a name scope ensures logical grouping of the layers in the graph.
  76. with tf.name_scope(layer_name):
  77. # This Variable will hold the state of the weights for the layer
  78. with tf.name_scope('weights'):
  79. weights = weight_variable([input_dim, output_dim])
  80. variable_summaries(weights, layer_name + '/weights')
  81. with tf.name_scope('biases'):
  82. biases = bias_variable([output_dim])
  83. variable_summaries(biases, layer_name + '/biases')
  84. with tf.name_scope('Wx_plus_b'):
  85. preactivate = tf.matmul(input_tensor, weights) + biases
  86. tf.histogram_summary(layer_name + '/pre_activations', preactivate)
  87. activations = act(preactivate, 'activation')
  88. tf.histogram_summary(layer_name + '/activations', activations)
  89. return activations
  90. hidden1 = nn_layer(x, 784, 500, 'layer1')
  91. dropped = tf.nn.dropout(hidden1, keep_prob)
  92. y = nn_layer(dropped, 500, 10, 'layer2', act=tf.nn.softmax)
  93. with tf.name_scope('cross_entropy'):
  94. diff = y_ * tf.log(y)
  95. with tf.name_scope('total'):
  96. cross_entropy = -tf.reduce_mean(diff)
  97. tf.scalar_summary('cross entropy', cross_entropy)
  98. with tf.name_scope('train'):
  99. train_step = tf.train.AdamOptimizer(
  100. FLAGS.learning_rate).minimize(cross_entropy)
  101. with tf.name_scope('accuracy'):
  102. with tf.name_scope('correct_prediction'):
  103. correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
  104. with tf.name_scope('accuracy'):
  105. accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
  106. tf.scalar_summary('accuracy', accuracy)
  107. # Merge all the summaries and write them out to /tmp/mnist_logs (by default)
  108. merged = tf.merge_all_summaries()
  109. train_writer = tf.train.SummaryWriter(FLAGS.summaries_dir + '/train', sess.graph)
  110. test_writer = tf.train.SummaryWriter(FLAGS.summaries_dir + '/test')
  111. tf.initialize_all_variables().run()
  112. # Train the model, and also write summaries.
  113. # Every 10th step, measure test-set accuracy, and write test summaries
  114. # All other steps, run train_step on training data, & add training summaries
  115. def feed_dict(train):
  116. """Make a TensorFlow feed_dict: maps data onto Tensor placeholders."""
  117. if train or FLAGS.fake_data:
  118. xs, ys = mnist.train.next_batch(100, fake_data=FLAGS.fake_data)
  119. k = FLAGS.dropout
  120. else:
  121. xs, ys = mnist.test.images, mnist.test.labels
  122. k = 1.0
  123. return {x: xs, y_: ys, keep_prob: k}
  124. for i in range(FLAGS.max_steps):
  125. if i % 10 == 0:  # Record summaries and test-set accuracy
  126. summary, acc = sess.run([merged, accuracy], feed_dict=feed_dict(False))
  127. test_writer.add_summary(summary, i)
  128. print('Accuracy at step %s: %s' % (i, acc))
  129. else: # Record train set summarieis, and train
  130. summary, _ = sess.run([merged, train_step], feed_dict=feed_dict(True))
  131. train_writer.add_summary(summary, i)
  132. def main(_):
  133. if tf.gfile.Exists(FLAGS.summaries_dir):
  134. tf.gfile.DeleteRecursively(FLAGS.summaries_dir)
  135. tf.gfile.MakeDirs(FLAGS.summaries_dir)
  136. train()
  137. if __name__ == '__main__':
  138. tf.app.run()

TensorBoard可视化网络结构和参数Tensorboard windows显示空白相关推荐

  1. 【tensorboard可视化-使用+虚线去除+数据点显示不全】

    0.前言 可视化各个监控指标的使用,分别对以下选项卡进行介绍, TensorFlow 版本不一样会导致该界面也略有不同, 0.9.0 版本的 TensorFlow 有 5 个分栏,分别是SCALARS ...

  2. 【tensorflow】——tensorboard可视化计算图以及参数曲线图loss图

    参考文献: https://zhuanlan.zhihu.com/p/71328244 目录 1.可视化计算图 2.可视化参数 3. 远程tensorboard 4.报错 真是出来混迟早是要还的,之前 ...

  3. Tensorboard可视化:基于LeNet5进行面部表情分类

    个人博客:http://www.chenjianqu.com/ 原文链接:http://www.chenjianqu.com/show-52.html  面部表情分类 面部表情是面部肌肉的一个或多个动 ...

  4. TensorFlow之图结构与TensorBoard可视化

    TensorFlow之图结构与TensorBoard可视化 1.1 什么是图结构 图包含了一组tf.Operation代表的计算单元对象和tf.Tensor代表的计算单元之间流动的数据. 1.2 图相 ...

  5. Tensorboard—使用keras结合Tensorboard可视化

    1. keras如何使用tensorboard keras使用tensorboard是通过回调函数来实现的,关于什么是keras的"回调函数",这里就不再赘述了,所以Tensorb ...

  6. 【TensorFlow-windows】TensorBoard可视化

    前言 紧接上一篇博客,学习tensorboard可视化训练过程. 国际惯例,参考博客: MNIST机器学习入门 Tensorboard 详解(上篇) Tensorboard 可视化好帮手 2 tf-d ...

  7. 无tensorflow,在pytorch下使用tensorboard可视化工具报错:Could not load dynamic library ‘cudart64_110.dll‘; dlerror

    文章目录 报错信息: 真实原因 解决方案 tensorboard完整demo代码: 在pycharm终端下输入命令 (如果是在cmd中输入命令的话,记得一定要把cmd中的目录切换成本项目的路径,博客最 ...

  8. Tensorboard可视化神经网络详细教程

    Tensorboard可视化神经网络详细教程 前言: tensorboard是一个非常强大的工具.不仅仅可以帮助我们可视化神经网络训练过程中的各种参数,而且可以帮助我们更好的调整网络模型.网络参数,这 ...

  9. 【TensorFlow实战笔记】卷积神经网络CNN实战-cifar10数据集(tensorboard可视化)

    IDE:pycharm Python: Python3.6 OS: win10 tf : CPU版本 代码可在github中下载,欢迎star,谢谢 CNN-CIFAR-10 一.CIFAR10数据集 ...

最新文章

  1. Happy WS 之 控制台 -- Happy Console (一)
  2. Nginx+Keeplived双机热备(主从模式)
  3. hdu 4640(状压dp)
  4. 网易技术干货 | 云信跨平台C++ SDK开发实战
  5. gpg加解密软件学习
  6. gnome硬盘分析_解决八种Linux硬盘问题的技巧
  7. python用什么处理文件_利用Python如何快速处理文件
  8. jquery中的ajax 网络请求
  9. java连接zookeeper 找不到zoo.cfg_ZooInspector 连接不到 Zookeeper 的解决方法
  10. 印第安纳大学计算机语言学,语言学
  11. sqlprompt安装注册
  12. 【Android 教程系列第 10 篇】史上最全的 Android 应用包名汇总,含主流应用商店包名,持续更新...
  13. linux dig命令
  14. 企划学院第十二期游学活动“聚合”郑州站圆满落下帷幕!
  15. 三容水箱液位控制系统_基于Labview软件编程的三容水箱液位控制系统
  16. VR渲染和CR渲染同样文件的真实对比(附CR渲染参数)
  17. ppt文件太大怎么压缩?
  18. 死亡、疾病、意外,如何面对?
  19. 速腾聚创 RoboSense RS-Helios 32线激光雷达使用 LeGO-LOAM 算法建图
  20. video 配置详细参数

热门文章

  1. tcpip测试工具软件,TCP Test Tool(TCP测试工具) V2.3 官方版
  2. java -d32_java11教程--JDK 10删除和不推荐的功能和选项-2
  3. java程序的装载与检查_浅谈Java类型装载、连接与初始化
  4. python获取系统时间月份_python 取数组绝对值python获取当前日期
  5. java 音频电台_Java-通过Java套接字广播语音
  6. 山沟沟里的实业路(3)
  7. Swift 5进入发布倒计时
  8. weblogic 部署后出现Error 404–Not Found
  9. Python之两个列表一起打乱
  10. CSS Float(浮动)