为了账号安全,请及时绑定邮箱和手机立即绑定

2018-08-07 可视化好助手

标签:
Sass/Less

TensorFlow的可视化工具 — tensorboard。通过使用这个工具我们可以很直观的看到整个神经网络的结构、框架。其效果见下图:

webp

  给inputs指定名称,其他的部分类似。

with tf.name_scope('inputs'):
  xs = tf.placeholder(tf.float32, [None, 1],name='x_in')
  ys= tf.placeholder(tf.loat32, [None, 1],name='y_in')

  我们需要使用 tf.summary.FileWriter() (tf.train.SummaryWriter() 这种方式已经在 tf >= 0.12 版本中摒弃) 将上面‘绘画’出的图保存到一个目录中,以方便后期在浏览器中可以浏览。 这个方法中的第二个参数需要使用sess.graph , 因此我们需要把这句话放在获取session的后面。 这里的graph是将前面定义的框架信息收集起来,然后放在logs/目录下面。

sess = tf.Session() # get session# tf.train.SummaryWriter soon be deprecated, use followingwriter = tf.summary.FileWriter("logs/", sess.graph)

  然后在终端中,使用命令tensorboard --logdir logs。将终端中的网址复制到浏览器中进行访问(建议使用google chrome),这样就可以看到之前定义的框架了。
  tensorflow中提供了tf.summary.histogram()方法,用来绘制图片, 第一个参数是图表的名称, 第二个参数是图表要记录的变量。可以将addlayer()方法成为如下的样子

def add_layer(inputs , in_size, out_size, n_layer, activation_function=None):
    ## add one more layer and return the output of this layer
    layer_name='layer%s'%n_layer    with tf.name_scope(layer_name):         with tf.name_scope('weights'):
              Weights= tf.Variable(tf.random_normal([in_size, out_size]),name='W')              # tf.histogram_summary(layer_name+'/weights',Weights)
              tf.summary.histogram(layer_name + '/weights', Weights) # tensorflow >= 0.12

         with tf.name_scope('biases'):
              biases = tf.Variable(tf.zeros([1,out_size])+0.1, name='b')              # tf.histogram_summary(layer_name+'/biase',biases)
              tf.summary.histogram(layer_name + '/biases', biases)  # Tensorflow >= 0.12

         with tf.name_scope('Wx_plus_b'):
              Wx_plus_b = tf.add(tf.matmul(inputs,Weights), biases)         if activation_function is None:
            outputs=Wx_plus_b         else:
            outputs= activation_function(Wx_plus_b)         # tf.histogram_summary(layer_name+'/outputs',outputs)
         tf.summary.histogram(layer_name + '/outputs', outputs) # Tensorflow >= 0.12

    return outputs

  由于我们对addlayer 添加了一个参数, 所以需要修改之前调用addlayer()函数的地方。
  观看loss的变化比较重要. 当你的loss呈下降的趋势,说明你的神经网络训练是有效果的。修改后的代码片段如下:

with tf.name_scope('loss'):
     loss= tf.reduce_mean(tf.reduce_sum(
              tf.square(ys- prediction), reduction_indices=[1]))     # tf.scalar_summary('loss',loss) # tensorflow < 0.12
     tf.summary.scalar('loss', loss) # tensorflow >= 0.12

  接下来, 开始合并打包。 tf.merge_all_summaries() 方法会对我们所有的 summaries 合并到一起. 因此在原有代码片段中添加:

sess= tf.Session()# merged= tf.merge_all_summaries()    # tensorflow < 0.12merged = tf.summary.merge_all() # tensorflow >= 0.12# writer = tf.train.SummaryWriter('logs/', sess.graph)    # tensorflow < 0.12writer = tf.summary.FileWriter("logs/", sess.graph) # tensorflow >=0.12sess.run(tf.global_variables_initializer())

  为了较为直观显示训练过程中每个参数的变化,我们每隔上50次就记录一次结果 , 同时我们也应注意, merged 也是需要run 才能发挥作用的,所以在for循环中写下:

for i in range(1000):
   sess.run(train_step, feed_dict={xs:x_data, ys:y_data})   if i%50 == 0:
      rs = sess.run(merged,feed_dict={xs:x_data,ys:y_data})
      writer.add_summary(rs, i)



作者:maple_yang
链接:https://www.jianshu.com/p/2393d40a70cb


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消