tensorboard的可视化及模型可视化

待整理

How to Check-Point Deep Learning Models in Keras


LossWise
Tensorboard 中文社区


谷歌发布TensorBoard API,让你自定义机器学习中的可视化


查找tensorflow安装的位置


pip show tensorflow-gpu
Name: tensorflow-gpu
Version: 1.0.1
Summary: TensorFlow helps the tensors flow
Home-page: http://tensorflow.org/
Author: Google Inc.
Author-email: [email protected]
License: Apache 2.0
Location: /home/bids/.local/lib/python2.7/site-packages
Requires: mock, numpy, protobuf, wheel, six

或者

python
import tensorflow
tensorflow.__path__
dir(tensorflow)

终止某个程序的进程

pkill -f "tensorboard"

什么是 TensorBoard


TensorBoard 是 TensorFlow 上一个非常酷的功能,神经网络很多时候就像是个黑盒子,里面到底是什么样,是什么样的结构,是怎么训练的,可能很难搞清楚。而 TensorBoard 的作用就是可以把复杂的神经网络训练过程给可视化,可以更好地理解,调试并优化程序。
TensorBoard可以将训练过程中的各种绘制数据展示出来,包括标量(scalars),图片(images),音频(Audio),计算图(graph),数据分布,直方图(histograms)和嵌入式向量。

在 scalars 下可以看到 accuracy,cross entropy,dropout,layer1 和 layer2 的 bias 和 weights 等的趋势。
在 images 和 audio 下可以看到输入的数据。展示训练过程中记录的图像和音频。
在 graphs 中可以看到模型的结构。
在 histogram 可以看到 activations,gradients 或者 weights 等变量的每一步的分布,越靠前面就是越新的步数的结果。展示训练过程中记录的数据的分布图
distribution 和 histogram 是两种不同的形式,可以看到整体的状况。
在 embedding 中可以看到用 PCA 主成分分析方法将高维数据投影到 3D 空间后的数据的关系。
Event: 展示训练过程中的统计数据(最值,均值等)变化情况

使用TensorBoard展示数据,需要在执行Tensorflow就算图的过程中,将各种类型的数据汇总并记录到日志文件中。然后使用TensorBoard读取这些日志文件,解析数据并生产数据可视化的Web页面,让我们可以在浏览器中观察各种汇总数据。


汇总数据的日志--callbacks回调执行结果


log_filepath = '/tmp/keras_log' 

model.compile(loss='categorical_crossentropy', optimizer=SGD(lr=0.001), metrics=['accuracy'])    
tb_cb = keras.callbacks.TensorBoard(log_dir=log_filepath, write_images=1, histogram_freq=1)  
# 设置log的存储位置,将网络权值以图片格式保持在tensorboard中显示,设置每一个周期计算一次网络的  
#权值,每层输出值的分布直方图  
cbks = [tb_cb]  
history = model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch,   
verbose=1, callbacks=cbks, validation_data=(X_test, Y_test))  

tensorboard 默认的slcar一栏只记录了训练集和验证集上的loss,如何想记录展示其他指标,在model.compile的metric中进行添加,例如:

model.compile(  
      loss = 'mean_squared_error',  
      optimizer = 'sgd',  
      metrics= c('mae', 'acc')  # 可视化mae和acc  
    )  

而在keras的call back模块中,tensorborad class类实现源码可以看出,keras默认将模型的所有层的所有weights, bias以及每一层输出的distribution, histogram等传送到tensorborad,方便在浏览器中观察网络的运行情况。实现源码如下:

    def set_model(self, model):  
        self.model = model  
        self.sess = K.get_session()  
        if self.histogram_freq and self.merged is None:  
            for layer in self.model.layers:  

                for weight in layer.weights:  
                    tf.summary.histogram(weight.name, weight)  
                    if self.write_images:  
                        w_img = tf.squeeze(weight)  
                        shape = w_img.get_shape()  
                        if len(shape) > 1 and shape[0] > shape[1]:  
                            w_img = tf.transpose(w_img)  
                        if len(shape) == 1:  
                            w_img = tf.expand_dims(w_img, 0)  
                        w_img = tf.expand_dims(tf.expand_dims(w_img, 0), -1)  
                        tf.summary.image(weight.name, w_img)  

                if hasattr(layer, 'output'):  
                    tf.summary.histogram('{}_out'.format(layer.name),  
                                         layer.output)  
        self.merged = tf.summary.merge_all()  

可视化结果


python /home/bids/.local/lib/python2.7/site-packages/tensorboard/tensorboard.py --logdir='/tmp/keras_log'
Starting TensorBoard 54 at http://bids:6006
(Press CTRL+C to quit)

训练误差和测试误差在同一个图中(tensorflow)


具体参看Windows下tensorflow的tensorboard的使用

TensorBoard: Visualizing Learning

使用Tensorboard查看训练过程

TensorFlow深度学习笔记 Tensorboard入门
Tensorflow 自带可视化Tensorboard使用方法 附项目代码

学习TensorFlow,TensorBoard可视化网络结构和参数

tensorflow中如何进行可视化和减轻过拟合

TensorFlow-7-TensorBoard Embedding可视化

from __future__ import absolute_import  
from __future__ import division  
from __future__ import print_function  

import argparse  
import sys  

import tensorflow as tf  

from tensorflow.examples.tutorials.mnist import input_data  

FLAGS = None  


def train():  
  # Import data  
  mnist = input_data.read_data_sets(FLAGS.data_dir,  
                                    one_hot=True,  
                                    fake_data=FLAGS.fake_data)  

  sess = tf.InteractiveSession()  
  # Create a multilayer model.  

  # Input placeholders  
  with tf.name_scope('input'):  
    x = tf.placeholder(tf.float32, [None, 784], name='x-input')  
    y_ = tf.placeholder(tf.float32, [None, 10], name='y-input')  

  with tf.name_scope('input_reshape'):  
    image_shaped_input = tf.reshape(x, [-1, 28, 28, 1])  
    tf.summary.image('input', image_shaped_input, 10)  

  # We can't initialize these variables to 0 - the network will get stuck.  
  def weight_variable(shape):  
    """Create a weight variable with appropriate initialization."
  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值