tensorboard 订阅
TensorBoard 是 TensorFlow 提供的实用工具(utility),可以图形化的显示 computational graph。 展开全文
TensorBoard 是 TensorFlow 提供的实用工具(utility),可以图形化的显示 computational graph。
信息
外文名
TensorBoard
TCP/IP协议简介
TensorBoard 是 TensorFlow提供的一组可视化工具(a suite of visualization tools),可以帮助开发者方便的理解、调试、优化TensorFlow 程序 [1]  。
收起全文
精华内容
下载资源
问答
  • tensorboard

    2019-04-18 22:42:26
    tensorboard

    tensorboard

    import tensorflow as tf

    with tf.name_scope(‘graph’) as scope:
    matrix1 = tf.constant([[3., 3.]], name=‘matrix1’) # 1 row by 2 column
    matrix2 = tf.constant([[2.], [2.]], name=‘matrix2’) # 2 row by 1 column
    product = tf.matmul(matrix1, matrix2, name=‘product’)

    sess = tf.Session()
    writer = tf.summary.FileWriter(“logs/”, sess.graph)
    init = tf.global_variables_initializer()
    sess.run(init)

    展开全文
  • Tensorboard

    2020-12-07 10:47:15
    <div><p>add tensorboard logging <p>-set iteration in logger from runner -log to tensorboard record_tabular if SummaryWriter is not None -change log names to enable grouping in tensorboard</p><p>该提问...
  • TensorBoard

    2017-12-15 13:50:10
    [code="java"](C:\Users\Key\Anaconda3) C:\Users\Key>activate tensorflow ...tensorboard --logdir=C:/logs TensorBoard 0.4.0rc3 at http://Key:6006 (Press CTRL+C to quit) (ten...
    (C:\Users\Key\Anaconda3) C:\Users\Key>activate tensorflow

    (tensorflow) C:\Users\Key>tensorboard --logdir=C:/logs
    TensorBoard 0.4.0rc3 at http://Key:6006 (Press CTRL+C to quit)

    (tensorflow) C:\Users\Key>tensorboard --logdir=C:/log/supervisor.log
    TensorBoard 0.4.0rc3 at http://Key:6006 (Press CTRL+C to quit)
    展开全文
  • TensorBoard TensorBoard is a suite of web applications for inspecting and understanding your TensorFlow runs and graphs. This README gives an overview of key concepts in TensorBoard, as well as how ...
  • 【TensorFlow | TensorBoard】理解 TensorBoard

    万次阅读 多人点赞 2017-08-20 10:01:19
    TensorBoard 是用于可视化 TensorFlow 模型的训练过程的工具(the flow of tensors),在你安装 TensorFlow 的时候就已经安装了 TensorBoard。我在前面的 【TensorFlow】TensorFlow 的卷积神经网络 CNN - ...

    TensorBoard 是用于可视化 TensorFlow 模型的训练过程的工具(the flow of tensors),在你安装 TensorFlow 的时候就已经安装了 TensorBoard。我在前面的 【TensorFlow】TensorFlow 的卷积神经网络 CNN - TensorBoard版【Python | TensorBoard】用 PCA 可视化 MNIST 手写数字识别数据集 分别非常简单的介绍了一下这个工具,没有详细说明,这次来(尽可能详细的)整体说一下,而且这次也是对 前者 代码的一个升级,很大程度的改变了代码结构,将输入和训练分离开来,结构更清晰。小弟不才,如有错误,欢迎评论区指出。

    全部代码和 TensorBoard 文件均在 我的 GitHub 上,你也可以从 百度网盘 下载,密码 t27f ,只不过如果以后内容更新,网盘中的内容不会更新。

    Tensorboard 使用的版本为 0.1.4,对应于 TensorFlow 1.3.0,但训练代码未在 TensorFlow 1.3.0 上测试,不过应该是可以运行的。Windows 下 TensorFlow 的安装可以看 【TensorFlow】Windows10 64位下安装TensorFlow - 官方原生支持


    更新

    这里我会列出对本文的更新。

    • 2017 年 8 月 22 日:TensorBoard 0.1.4 发布,更新界面截图。

    TensorBoard 是如何工作的?

    简单来说,TensorBoard 是通过一些操作(summary operations)将数据记录到文件(event files)中,然后再读取文件来完成作图的。想要在浏览器上看到 TensorBoard 页面,大概需要这几步:

    1. summary。在定义计算图的时候,在适当的位置加上一些 summary 操作
    2. merge。你很可能加了很多 summary 操作,我们需要使用 tf.summary.merge_all 来将这些 summary 操作聚合成一个操作,由它来产生所有 summary 数据。
    3. run。在没有运行的时候这些操作是不会执行任何东西的,仅仅是定义了一下而已。在运行(开始训练)的时候,我们需要通过 tf.summary.FileWriter() 指定一个目录来告诉程序把产生的文件放到哪。然后在运行的时候使用 add_summary() 来将某一步的 summary 数据记录到文件中。

    当训练完成后,在命令行使用 tensorboard --logdir=path/to/log-directory 来启动 TensorBoard,按照提示在浏览器打开页面,注意把 path/to/log-directory 替换成你上面指定的目录。


    OVERVIEW

    总体上,目前 TensorBoard 主要包括下面几个面板:

    TK5BIH4.png

    其中 TEXT 是 最新版(应该是 1.3)才加进去的,实验性功能,官方都没怎么介绍。除了 AUDIO(没用过)、EMBEDDINGS(还不是很熟) 和 TEXT(没用过) 这几个,这篇博客主要说剩下的几个,其他的等回头熟练了再来说,尽量避免误人子弟。

    TensorBoard 的工作原理是读取模型训练时产生的 TensorFlow events 文件,这个文件包括了一些 summary 数据(就是作图时用的数据)。


    SCALARS

    s9drW9Z.png

    TensorBoard 的默认打开样式

    TensorBoard 打开时默认直接进入 SCALARS,并且默认使用 .* 正则表达式显示所有图(其他面板同理,下面就不再赘述),你用到的面板会在顶部导航栏直接显示,而其他用不到的(你代码中没有相关代码)则会收起到 INACTIVE 中。

    W8ewfgz.png

    SCALARS 面板主要用于记录诸如准确率、损失和学习率等单个值的变化趋势。在代码中用 tf.summary.scalar() 来将其记录到文件中。对应于我的代码中,我是使用其记录了训练准确率和损失。

    训练准确率:

    with tf.name_scope('accuracy'):
        correct_prediction = tf.equal(tf.argmax(logits, 1), tf.argmax(y, 1))
        accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
        tf.summary.scalar('accuracy', accuracy)
    fpWU4rj.png

    全部 run 的 acuracy

    可以看到这些曲线并不是那么平滑,这是因为我记录的步数比较少,也就是点比较少,如果每一步都记录或者间隔比较短,那么最后的文件会很大。下同

    损失:

    with tf.name_scope('loss'):
        loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=y)) + \
            BETA * tf.add_n([tf.nn.l2_loss(v)
                            for v in trainable_vars if not 'b' in v.name])
    
        tf.summary.scalar('loss', loss)
    loss

    全部 run 的 loss

    每个图的右下角都有 3 个小图标,第一个是查看大图,第二个是是否对 y 轴对数化,第三个是如果你拖动或者缩放了坐标轴,再重新回到原始位置。

    fit-domain-to-data

    Fit domain to data

    tf.summary.scalar(name, tensor) 有两个参数:

    • name:可以理解为图的标题。在 GRAPHS 中则是该节点的名字
    • tensor:包含单个值的 tensor,说白了就是作图的时候要用的数据

    在上面的图中,可以看到除了 accuracyloss 外,还有一个 eval_accuracy,这个是我用来记录验证准确率的,代码中相关的部分如下:

    eval_writer = tf.summary.FileWriter(LOGDIR + '/eval')
    
    # Some other codes
    
    eval_writer.add_summary(tf.Summary(value=[tf.Summary.Value(tag='eval_accuracy', simple_value=np.mean(test_acc))]), i)
    eval-accuracy

    全部 run 的 eval_accuracy

    这里我是手动添加了一个验证准确率到 SCALARS 中,其实想要记录验证准确率完全不必这么做,和训练准确率不同的只是 feed 的数据不一样而已。然而由于我的显存不够一次装下整个验证集,所以我就分了两部分计算然后求平均值来得到整个验证集的准确率。如果谁有更好的方法,请给我发邮件或者在评论区评论,非常感谢 :-)

    当我们有很多的 tag (图)的时候,我们可以在左上角写正则表达式来选择其中一些 tag,比如我想选择包括 accuracy 的 tag,那么我直接写上 accuracy 就可以了,右侧就会多出一个 accuracy 的 tag,显示匹配出的结果。

    页面左上是 Show data download linksIgnore outliers in chart scaling,这两个比较好理解,第一个就是显示数据下载链接,可以把 TensorBoard 作图用的数据下载下来,点击后可以在图的右下角可以看到下载链接以及选择下载哪一个 run 的,下载格式支持 CSV 和 JSON。第二个是排除异常点,默认选中。

    当我们用鼠标在图上滑过的时候可以显示出每个 run 对应的点的值,这个显示顺序是由 Tooltip sorting method 来控制的,有 defaultdescending(降序)、asceding (升序)和 nearest 四个选项,大家可以试试点几下。

    而下面的 Smoothing 指的是作图时曲线的平滑程度,使用的是类似指数平滑的处理方法。如果不平滑处理的话,有些曲线波动很大,难以看出趋势。0 就是不平滑处理,1 就是最平滑,默认是 0.6。

    Horizontal Axis 顾名思义指的是横轴的设置:

    • STEP:默认选项,指的是横轴显示的是训练迭代次数
    • RELATIVE:这个相对指的是相对时间,相对于训练开始的时间,也就是说是训练用时 ,单位是小时
    • WALL:指训练的绝对时间

    最下面的 Runs 列出了各个 run,你可以选择只显示某一个或某几个。


    IMAGES

    如果你的模型输入是图像(的像素值),然后你想看看模型每次的输入图像是什么样的,以保证每次输入的图像没有问题(因为你可能在模型中对图像做了某种变换,而这种变换是很容易出问题的),IMAGES 面板就是干这个的,它可以显示出相应的输入图像,默认显示最新的输入图像,如下图:

    images

    第 45000 次迭代时输入的 3 个图像

    图的右下角的两个图标,第一个是查看大图,第二个是查看原图(真实大小,默认显示的是放大后的)。左侧和 SCALARS 差不多,我就不赘述了。

    而在代码中,需要在合适的位置使用 tf.summary.image() 来把图像记录到文件中,其参数和 tf.summary.scalar() 大致相同,多了一个 max_outputs ,指的是最多显示多少张图片,默认为 3。对应于我的代码,如下:

    x = tf.placeholder(tf.float32, shape=[None, N_FEATURES], name='x')
    x_image = tf.transpose(tf.reshape(x, [-1, 3, 32, 32]), perm=[0, 2, 3, 1])
    tf.summary.image('input', x_image, max_outputs=3)
    y = tf.placeholder(tf.float32, [None, N_CLASSES], name='labels')

    GRAPHS

    这个应该是最常用的面板了。很多时候我们的模型很复杂,包含很多层,我们想要总体上看下构建的网络到底是什么样的,这时候就用到 GRAPHS 面板了,在这里可以展示出你所构建的网络整体结构,显示数据流的方向和大小,也可以显示训练时每个节点的用时、耗费的内存大小以及参数多少。默认显示的图分为两部分:主图(Main Graph)和辅助节点(Auxiliary Nodes)。其中主图显示的就是网络结构,辅助节点则显示的是初始化、训练、保存等节点。我们可以双击某个节点或者点击节点右上角的 + 来展开查看里面的情况,也可以对齐进行缩放,每个节点的命名都是我们在代码中使用 tf.name_scope() 定义好的。下面介绍下该面板左侧的功能。

    graph

    计算图

    左上是 Fit to screen,顾名思义就是将图缩放到适合屏幕。下面的 Download PNG 则是将图保存到本地。RunSession Run 分别是不同的训练和迭代步数。比如我这里以不同的超参训练了 6 次,那么 就有 6 个 run,而你所记录的迭代次数(并不是每一步都会记录当前状态的,那样的话太多了,一般都是每隔多少次记录一次)则显示在 Session Run 里。再下面大家应该都能看懂,我就不详细说每个功能的意思了。

    run

    选择迭代步数

    TensorBoard 默认是不会记录每个节点的用时、耗费的内存大小等这些信息的,那么如何才能在图上显示这些信息呢?关键就是如下这些代码,主要就是在 sess.run() 中加入 optionsrun_metadata 参数。

    run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
    run_metadata = tf.RunMetadata()
    s, lss, acc , _ = sess.run([merged_summary, loss, accuracy, train_step], 
                               feed_dict={x: batch_x, y: batch_y, phase: 1},
                               options=run_options,
                               run_metadata=run_metadata)
    summary_writer.add_run_metadata(run_metadata, 'step{}'.format(i))
    summary_writer.add_summary(s, i)

    然后我们就可以选择 Compute time 或者 Memory 来查看相应信息,颜色深浅代表耗时多少或者内存耗用多少。

    compute-time-memory

    计算耗时

    我们也可以将某个节点从主图移除,将其放到辅助节点中,以便于我们更清晰的观察整个网络。具体操作是 右键该节点,选择 Remove from main graph


    DISTRIBUTIONS

    DISTRIBUTIONS 主要用来展示网络中各参数随训练步数的增加的变化情况,可以说是 多分位数折线图 的堆叠。下面我就下面这张图来解释下。

    conv1-weights

    权重分布

    这张图表示的是第二个卷积层的权重变化。横轴表示训练步数,纵轴表示权重值。而从上到下的折现分别表示权重分布的不同分位数:[maximum, 93%, 84%, 69%, 50%, 31%, 16%, 7%, minimum]。对应于我的代码,部分如下:

    with tf.name_scope(name):
        W = tf.Variable(tf.truncated_normal(
            [k, k, channels_in, channels_out], stddev=0.1), name='W')
        b = tf.Variable(tf.constant(0.1, shape=[channels_out]), name='b')
        conv = tf.nn.conv2d(inpt, W, strides=[1, s, s, 1], padding='SAME')
        act = tf.nn.relu(conv)
        tf.summary.histogram('weights', W)
        tf.summary.histogram('biases', b)
        tf.summary.histogram('activations', act)

    HISTOGRAMS

    HISTOGRAMSDISTRIBUTIONS 是对同一数据不同方式的展现。与 DISTRIBUTIONS 不同的是,HISTOGRAMS 可以说是 频数分布直方图 的堆叠。

    conv1-weights-hist

    权重分布

    横轴表示权重值,纵轴表示训练步数。颜色越深表示时间越早,越浅表示时间越晚(越接近训练结束)。除此之外,HISTOGRAMS 还有个 Histogram mode,有两个选项:OVERLAYOFFSET。选择 OVERLAY 时横轴为权重值,纵轴为频数,每一条折线为训练步数。颜色深浅与上面同理。默认为 OFFSET 模式。


    后记

    这篇博文写了好久,从准备数据到开始动笔写,中间一直被各种事干扰。由于我水平有限,我只能尽最大程度的给出尽可能正确的解释,然而还有很多我目前还兼顾不到,很多话也不是很通顺。如有错误,欢迎在评论区或者给我私信或者给我邮件指出。


    REFERENCES


    END

    展开全文
  • Add tensorboard

    2020-12-31 17:21:53
    <div><p>From <a href="https://github.com/tensorflow/tensorflow/releases/tag/v1.3.0">tensorflow 1.3.0, tensorboard is packaged independently in pypi. The tensorflow update that has just been pushed to ...
  • Tensorboard使用

    万次阅读 多人点赞 2018-02-20 14:12:13
    Tensorflow提供了一个TensorBoard工具,可以满足上面的需求。 介绍 TensorBoard是一个可视化工具,能够有效地展示Tensorflow在运行过程中的计算图、各种指标随着时间的变化趋势以及训练中使用到的数据信息。可以...

    背景

    在复杂的问题中,网络往往都是很复杂的。为了方便调试参数以及调整网络结构,我们需要将计算图可视化出来,以便能够更好的进行下一步的决策。Tensorflow提供了一个TensorBoard工具,可以满足上面的需求。

    介绍

    TensorBoard是一个可视化工具,能够有效地展示Tensorflow在运行过程中的计算图、各种指标随着时间的变化趋势以及训练中使用到的数据信息。可以查看TensorBoard Github ReadMe 详细阅读适应方法。

    简单的例子

    下面通过一个简单的例子来显示一下使用方式,下面的图是一个向量加法的图结构。

    import tensorflow as tf
    a = tf.constant([1.0,2.0,3.0],name='input1')
    b = tf.Variable(tf.random_uniform([3]),name='input2')
    add = tf.add_n([a,b],name='addOP')
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        writer = tf.summary.FileWriter("E://TensorBoard//test",sess.graph)
        print(sess.run(add))
    writer.close()
    

    运行完程序后,图结构将以日志文件的形式保存到给定的路径下。
    然后在命令行启动Tensorboard。Tensorboard作为本地的一个服务已经启动,端口号是6006,我们只需要在浏览器下输入127.0.0.1:6006就可以进入TensorBoard。下图分别是Tensorboard的界面,以及上面代码对用的图结构。

    tensorboard --logdir=E://TensorBoard//test

    这里写图片描述
    我们可以简单对下面的图结构进行解读。图中的椭圆代表操作,阴影代表明明空间,小圆圈代表常量。虚线箭头代表依赖,实线箭头代表数据流。
    我们的程序想要完成一个加法操作,首先需要利用random_uniform生成一个3元的向量,输入到input2变量节点中,然后input2变量节点需要依赖init操作来完成变量初始化。input2节点将结果输入到addOP操作节点中,同时常量节点input1也将数据输入到addOP中,最终addOP完成计算。
    这里写图片描述

    添加命名空间

    前面的程序,只是一个简单的加法,但是图结构却十分凌乱,而且整个程序的核心add没有在图结构中突出,反而是一些初始化的操作占据了计算图的主要部分。这样不利于对计算图进行分析。因此,我们需要利用一种方式,将计算图的细节部分隐藏,保留关键部分。 命名空间给我们提供了这种机会。
    上面的计算图中,核心部分是两个输入传递给加法操作完成计算,因此,我们需要将其他部分隐藏,只保留核心部分。

    import tensorflow as tf
    with tf.variable_scope('input1'):
        input1 = tf.constant([1.0,2.0,3.0],name='input1')
    with tf.variable_scope('input2'):
        input2 = tf.Variable(tf.random_uniform([3]),name='input2')
    add = tf.add_n([input1,input2],name='addOP')
    with tf.Session() as sess:
        init = tf.global_variables_initializer()
        sess.run(init)
        writer = tf.summary.FileWriter("E://TensorBoard//test",sess.graph)
        print(sess.run(add))
    writer.close()

    这里写图片描述
    利用同样的方式,我们可以将MNIST神经网络代码重新进行组织(不知道组织的逻辑结构是否正确)

    from tensorflow.examples.tutorials.mnist import input_data
    import tensorflow as tf
    
    mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
    
    batch_size = 100
    hidden1_nodes = 200
    with tf.name_scope('Input'):
        x = tf.placeholder(tf.float32,shape=(None,784))
        y = tf.placeholder(tf.float32,shape=(None,10))
    with tf.name_scope('Inference'):
        w1 = tf.Variable(tf.random_normal([784,hidden1_nodes],stddev=0.1))
        w2 = tf.Variable(tf.random_normal([hidden1_nodes,10],stddev=0.1))
        b1 = tf.Variable(tf.random_normal([hidden1_nodes],stddev=0.1))
        b2 = tf.Variable(tf.random_normal([10],stddev=0.1))
        hidden = tf.nn.relu(tf.matmul(x,w1)+b1)
        y_predict = tf.nn.relu(tf.matmul(hidden,w2)+b2)
    
    with tf.name_scope('Loss'):
        cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=y_predict))
    with tf.name_scope('Train'):
        train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
    with tf.name_scope('Accuracy'):
        correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_predict, 1))
        accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
    
    
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        for i in range(10000):
            batch_xs, batch_ys = mnist.train.next_batch(batch_size)
            sess.run(train_step, feed_dict={x: batch_xs, y: batch_ys})
            if i%1000==0:
                print ('Phase'+str(i/1000+1)+':',sess.run(accuracy, feed_dict={x: mnist.test.images, y: mnist.test.labels}))
    writer = tf.summary.FileWriter("./mnist_nn_log",sess.graph)
    writer.close()

    这里写图片描述

    展开全文
  • Tensorboard使用简介

    2018-04-24 22:16:03
    Tensorboard
  • Tensorboard Logging

    2020-11-26 05:04:56
    <div><p>Currently <code>tensorboard_logger</code> is used. I don't think it's actively supported anymore, they point to <a href="https://pytorch.org/docs/stable/tensorboard.html">pytorch's...
  • tensorflow-tensorboard - tensorboard 1. tensorflow-tensorboard https://pypi.org/project/tensorflow-tensorboard/ pip install tensorflow-tensorboard This PyPI entry has been deprecated in favor of the...
  • Tensorboard dev

    2020-11-30 12:12:01
    <div><p>One of the use cases we want to show for the CML site is producing a tensorboard link in the report. For example: <pre><code> View your TensorBoard live at: ...
  • TensorBoard 1.5.0

    2021-01-12 11:44:30
    <div><p>The 1.5.0 release series and beyond will use the new PyPI package name of just plain <code>tensorboard</code>.</p><p>该提问来源于开源项目:tensorflow/tensorboard</p></div>

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,171
精华内容 4,468
关键字:

tensorboard