简单卷积神经网络的tensorboard可视化

这篇博客介绍了如何利用TensorFlow 1.2版本的TensorBoard进行模型训练的可视化,包括标量曲线、图像、音频、数据流图等8种可视化类型。文章通过一个简单的卷积神经网络实例,详细阐述了TensorBoard的代码实现,交叉验证,以及启动和查看可视化结果的方法。
摘要由CSDN通过智能技术生成

tensorboard是tensorflow官方提供的可视化工具。可以将模型训练中的数据汇总、显示出来。本文是基于tensorflow1.2版本的。这个版本的tensorboard的界面如图:


image.png


tensorboard支持8种可视化,也就是上图中的8个选项卡,它们分别是:

  • SCALARS:标量曲线。例如准确率、损失率、权重和偏置等变化。在代码中tf.summary.scalar()定义需要在这个选项卡下展示的标量。
  • IMAGES:数据图像。对于图像分类问题,可以将输入或者训练过程中的图片展示出来。在代码中用tf.summary.image()定义需要在这个选项卡中展示的数据(直接绘制成图像展示),默认是绘制3张图片。
  • AUDIO:音频数据。还没有做过语音分析的例子,估计同上。
  • GRAPHS:tensorflow的数据流图。数据流图的完善性,都需要在程序中详细定义。用with tf.name_scope()或者with tf.name_scope() as scope来定义。
  • DISTRIBUTIONS:数据分布图。可以用来显示激活前和激活后数据的分布情况,辅助设计分析。
  • HISTOGRAMS:数据柱状图。在代码中用tf.summary.histogram()定义。
  • EMBEDDINGS:用于文本分析,展示词向量的投影分布(例如word2vec)

tensorboard通过运行一个本地服务器,监听6006端口,在浏览器发出请求时,分析训练时记录的数据,绘制训练过程中的数据曲线、图像。

tensorboard的代码实现:

首先需要申明数据保存的地址

 log_dir = './simple_cnn_log' # log dir to store all data and graph structure

为了在tensorboard中展示节点名称,在设计网络时采用with tf.name_scope() 限定命名空间:

with tf.name_scope('input'):    
        x = tf.placeholder(tf.float32, [None, 784], name='x')
        y_ = tf.placeholder(tf.float32, [None, 10], name='y_')
        keep_prob = tf.placeholder(tf.float32,name='kp')

这个在with tf.name_scope('input')中的所有节点都会被自动命名为“input/XXX”的格式。
定义variable_summaries函数对数据进行简单的统计分析,例如均值、方差、和极值。值得注意的是,这个函数中的输入参数var应该是用tf.Variable定义的权重、偏差。

    def variable_summaries(name,var):
        with tf.name_scope(name+'_summaries'):
            mean = tf.reduce_mean(var)
        tf.summary.scalar(name+'_mean', mean)
        with tf.name_scope(name+'_stddev'):
            stddev = tf.sqrt(tf.reduce_mean(tf.square(var-mean)))
        tf.summary.scalar(name+'_stddev', stddev)
        tf.summary.scalar(name+'_max',tf.reduce_max(var))
        tf.summary.scalar(name+'_min',tf.reduce_min(var))
        tf.summary.histogram(name+'_histogram', var)

对于所有用tf.summary定义汇总记录的数据,需要进行汇总,以便程序输出和保存。

    merged = tf.summary.merge_all()
    #merged = tf.summary.merge([input_summary,acc_summary])
    train_writer = tf.summary.FileWriter(log_dir+'/train',sess.graph)
    test_writer = tf.summary.FileWriter(log_dir+'/test')

这一步汇总的工作非常重要

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值