(傻瓜教程)TensorBoard可视化工具简单教程及讲解(TensorFlow与Pytorch)

2023-05-16

    首先庆祝踩坑踩了一万个的我终于搞懂TensorBoard的原理了,是我太蠢了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

    首先说明一下Tensorboard是个神马东西,官方给出的声明:TensorBoard是一个可视化工具,它可以用来展示网络图、张量的指标变化、张量的分布情况等。特别是在训练网络的时候,我们可以设置不同的参数(比如:权重W、偏置B、卷积层数、全连接层数等),使用TensorBoader可以很直观的帮我们进行参数的选择。它通过运行一个本地服务器,来监听6006端口。在浏览器发出请求时,分析训练时记录的数据,绘制训练过程中的图像。

   都是废话!就是画图的一个工具人罢了!!!

 

  谷歌一下TensorBoard的使用方法,清一色的用Minist手写数据集那个作为案例,好多博客也是,直接上代码看的有点迷,对于我这种没用过TensorBoard的小白来说及其不友好!!

 

接下来是TensorBoard的使用步骤:

一、 按照搭建TensorFlow神经网络的步骤来的话,在最后开始训练的时候,也就是调用modle.fit(一堆参数),或者生成器modle.fit_generator(又是一堆参数)这俩函数进行训练的时候,用回调函数callbacks来使用TensorBoard,如下:

model.fit_generator(略去一万个参数设置,
             TensorBoard(又是一堆参数)])

二、将TensorBoard加入回调函数后,对它进行参数设置,主要有七个参数:

1、log_dir: 用来保存Tensorboard的日志文件等内容的位置

2、histogram_freq: 对于模型中各个层计算激活值和模型权重直方图的频率。

3、write_graph: 是否在 TensorBoard 中可视化图像。True/False

4、write_grads: 是否在 TensorBoard 中可视化梯度值直方图。True/False

5、batch_size: 用以直方图计算的传入神经元网络输入批的大小。

6、write_images: 是否在 TensorBoard中将模型权重以图片可视化。

7、update_freq: 常用的三个值为’batch’ 、 ‘epoch’ 或 整数。当使用 ‘batch’ 时,在每个 batch 之后将损失和评估值写入到 TensorBoard 中。 ‘epoch’ 类似。如果使用整数,会在每一定个样本之后将损失和评估值写入到 TensorBoard 中。

 

比如说用生成器调函数

model.fit_generator(generate_arrays_from_file(lines[:num_train], batch_size),
            steps_per_epoch=max(1, num_train//batch_size),
            validation_data=generate_arrays_from_file(lines[num_train:], batch_size),
            validation_steps=max(1, num_val//batch_size),
            epochs=10,
            initial_epoch=0,
            callbacks=[checkpoint_period, reduce_lr,TensorBoard(log_dir="MyBoard",write_grads=True,histogram_freq=0)])

三、运行训练代码,训练完成后,右击自己设置的log_dir文件夹,show in explorer,复制当前路径地址,如果训练成功当前路径下会有一个events.out开头的文件。如下:

有个问题,如果运行报错If printing histograms, validation_data must be provided, and cannot be a generator

解决办法是:histogram_freq=0,先关了别用,或者就用fit写,别用生成器。

 

接下来就要开始用tensorboard了!

首先cmd打开命令行,激活你的代码环境,进去你上一步复制的路径,盘符跳转就打个盘号加冒号就行,然后cd 你复制的路径

然后调用

tensorboard --logdir=你创建的文件夹名字

之后会生成一个网址,在屏幕下方,类似于http:/你的电脑名/6006,复制到浏览器打开,最好用谷歌或者火狐,然后就能查看生成的各种可视化结果了。

如果出现这个网址打不开或者图片加载不出来的问题,在上方命令后面加上--host 127.0.0.1,如下:

tensorboard --logdir=Mytensorboard --host=127.0.0.1

最后生成的就是http://127.0.0.1:6006这种,然后进去就可以了。

还有一个方法是不在cmd里面写代码,在pycharm的terminal里面写就能加载出来,很迷,我也是看的别人博客说的顺便记录一下。

四、打开网址你会看见这

上面的图只是部分可视化功能,全部可视化功能还有很多很多,如下:

1.Scalars面板可视化

  Scalars这个面板是最最长常用的面板,主要用于将神经网络训练过程中的acc(训练集准确率)val_acc(验证集准确率),loss(损失值),weight(权重)等等变化情况绘制成折线图。

  它左边有一些参数设置:

Ignore outlines in chart scaling(忽略图表缩放中的轮廓),可以消除离散值

关了:

开着:

 

data downloadlinks(数据下载链接)

就是下面加了个下载链接

smoothing(图像的曲线平滑程度),较暗的是原曲线,值越大越平滑。

Horizontal Axis(水平轴)的表示,其中水平轴的表示分为3种(STEP代表迭代次数,RELATIVE代表按照训练集和测试集的相对值,WALL代表按照时间。

可以鼠标选中一块区域观察:

第二个按钮可以复原

下面那三按钮可以放大图像看细节,将鼠标移到曲线上会显示该点的一些参数,具体可以自己试一试,一试就啥都会了。

2.Images面板

这个面板会展示训练数据和测试数据在进行预处理后的图片,一般我不用,因为数据量很大,加载可慢.....

3.Graphs面板

这个面板也很常用,它里面画的都是数据流图,主要用于帮助我们理解神经网络的结构,两个节点的连线就是数据流,线的粗细表明两者之间流动的张量多少,越粗越多。右下角是缩略图,滚轮可以操作放大缩小,单击滑动区域或者在右下角选中。

在左侧可以选择迭代步骤,可以用不同的颜色来表示不同的Structrue(整个数据流图的结构),TPU Compatibility要查看模型的TPU 兼容性图,请在TensorBoard中选择“图形”选项卡,然后选择“ TPU 兼容性”选项。该图以绿色表示兼容(有效)操作,以红色表示不兼容(无效)操作,还有其他的如下:

自己可以慢慢试,其它面板暂时没用到,慢慢更新吧!

 

 

Pytorch下使用TensorBoard进行可视化

首先激活环境,然后通过命令安装tensorboardX,tensorboardX是用来提供给其他深度学习框架使用TensorBoard的一个包,TensorFlow这个做的贼好

pip install tensorboardX

还得安装TensorFlow

pip install tensorflow

非常注意的一点:这里你安装的TensorFlow版本必须要和tensorboardX一致,否则就会出现各种错误,比如生成的文件没有数据

 

安装好了之后就可以使用了

 

Scalar的使用

导包后往里面放数据就行,第一个参数是名称,第二个是y坐标,第三个是x坐标,通过add_scalar进行参数的添加。

import numpy as np
from tensorboardX import SummaryWriter

writer = SummaryWriter(log_dir='scalar')
for epoch in range(100):
    writer.add_scalar('scalar/test', np.random.rand(), epoch)
    writer.add_scalars('scalar/scalars_test', {'xsinx': epoch * np.sin(epoch), 'xcosx': epoch * np.cos(epoch)}, epoch)

writer.close()

生成event文件后,找到对应目录,cmd进入到它的上一层,然后使用命令***是你存放文件的目录

tensorboard logdir ***

 如我的就是tensorboard logdir scalar

 

将这个IP地址复制到浏览器打开即可,最好使用谷歌浏览器。

Graph的使用

导包后,通过add_graph将模型传入,并将输入也传入。

import torch
import torch.nn as nn
import torch.nn.functional as F
from tensorboardX import SummaryWriter


class Net1(nn.Module):
    def __init__(self):
        super(Net1, self).__init__()
        self.conv1 = nn.Conv2d(1, 10, kernel_size=5)
        self.conv2 = nn.Conv2d(10, 20, kernel_size=5)
        self.conv2_drop = nn.Dropout2d()
        self.fc1 = nn.Linear(320, 50)
        self.fc2 = nn.Linear(50, 10)
        self.bn = nn.BatchNorm2d(20)

    def forward(self, x):
        x = F.max_pool2d(self.conv1(x), 2)
        x = F.relu(x) + F.relu(-x)
        x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2))
        x = self.bn(x)
        x = x.view(-1, 320)
        x = F.relu(self.fc1(x))
        x = F.dropout(x, training=self.training)
        x = self.fc2(x)
        x = F.softmax(x, dim=1)
        return x


dummy_input = torch.rand(13, 1, 28, 28)

model = Net1()
with SummaryWriter(comment='Net1') as w:
    w.add_graph(model, (dummy_input,))

然后就可以看见网络的流图了

 生成loss

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(傻瓜教程)TensorBoard可视化工具简单教程及讲解(TensorFlow与Pytorch) 的相关文章

  • Linux_CenterOS环境下JDK安装

    JDK配置 1 卸载已有的open jdk 查看目前已有的JDK rpm qa grep jdk 输出如下 copy jdk configs 3 3 10 el7 5 noarch java 1 8 0 openjdk 1 8 0 181
  • 树莓派上设置程序开机自启动

    方法一 xff1a 向rc local文件添加启动代码 修改rc local文件 xff1a sudo nano etc rc local 在打开的rc local找到exit 0 xff0c 在exit 0 之前添加一行代码 xff1a
  • smartcar仿真学习记录

    操作系统 xff1a ubuntu 18 04 ROS版本 xff1a melodic 本记录是跟随古月居的smartcar教程进行学习的 终端 文件夹下的操作 首先创建目录 也就是catkin ws src mkdir p smartca
  • 在树莓派上手动添加ROS包(usb_cam)

    在ROS下 xff0c 下载包源码编译后 xff0c 手动添加包 系统 xff1a ubuntu1804 xff08 树莓派 xff09 在树莓派上安装了ubuntu xff0c 但树莓派是arm架构 xff0c 所以用的下载源也不同于在电
  • /etc/apt/sources.list

    统一格式 xff1a deb https A B C main restricted universe multiverse deb src https A B C main restricted universe multiverse d
  • WARNING: pip is being invoked by an old script wrapper.

  • Keil 添加库文件(xxx.h)路径

  • 时间复杂度中的log(n)底数到底是多少?

    其实这里的底数对于研究程序运行效率不重要 xff0c 写代码时要考虑的是数据规模n对程序运行效率的影响 xff0c 常数部分则忽略 xff0c 同样的 xff0c 如果不同时间复杂度的倍数关系为常数 xff0c 那也可以近似认为两者为同一量
  • ubuntu1804(树莓派)使用AV接口播放音频问题

    2条消息 在运行ubuntu 18 04的树莓派上播放声音 Qrpucp的博客 CSDN博客 config txt还需加入 audio pwm mode 61 2
  • 在Modelsim内编辑testbench并重新仿真

    方法同样适用于编辑 v文件
  • 【SSH连接阿里云服务器失败解决办法】

    SSH连接阿里云服务器失败解决办法 1 添加安全组规则 找到要修改的实例 点击实例名 xff0c 进入实例详情界面 xff0c 点击 配置安全组规则 点击配置规则 添加一条如下图所示的入方向端口22 测试连接是否成功 xff0c 若不成功
  • sklearn实战-----6.聚类算法K-Means

    1 概述 1 1 无监督学习与聚类算法 在过去的五周之内 xff0c 我们学习了决策树 xff0c 随机森林 xff0c 逻辑回归 xff0c 他们虽然有着不同的功能 xff0c 但却都属于 有监督学习 的一部分 xff0c 即是说 xff
  • 过于神奇的 ChatGPT

    实在好奇究竟用的什么数据集 xff0c 居然能得到下述问答 xff1a 最后又扣回了第一个问题 按照你的要求直接给出答案 xff0c 确实很强 xff01
  • 优质 CS 读博 (PhD) 经验贴汇总

    前言 如果你对这篇文章感兴趣 xff0c 可以点击 访客必读 指引页 一文囊括主页内所有高质量博客 xff0c 查看完整博客分类与对应链接 Advice for early stage Ph D students 读博的核心是在研究上取得进
  • 推荐系统中的协同过滤算法

    前言 如果你对这篇文章感兴趣 xff0c 可以点击 访客必读 指引页 一文囊括主页内所有高质量博客 xff0c 查看完整博客分类与对应链接 概述 协同过滤是一种推荐算法 xff0c 其通常建模为 m m m 个用户 xff0c n
  • 哈希函数的学习算法整理

    前言 如果你对这篇文章感兴趣 xff0c 可以点击 访客必读 指引页 一文囊括主页内所有高质量博客 xff0c 查看完整博客分类与对应链接 概述 哈希函数学习的两个步骤 xff1a 转为二进制编码 xff1a 可以先降维成实数 xff0c
  • O(1) 的离散概率分布采样方法 - Alias Method

    前言 如果你对这篇文章感兴趣 xff0c 可以点击 访客必读 指引页 一文囊括主页内所有高质量博客 xff0c 查看完整博客分类与对应链接 Alias Method 给定一个离散概率分布 p 61 0 3
  • 变分推断 (Variational Inference) 解析

    前言 如果你对这篇文章感兴趣 xff0c 可以点击 访客必读 指引页 一文囊括主页内所有高质量博客 xff0c 查看完整博客分类与对应链接 变分推断 在贝叶斯方法中 xff0c 针对含有隐变量的学习和推理 xff0c 通常有两类方式 xff
  • 通过ssh连接aws(亚马逊 云服务器 实例)

    一 Windows用户 windows可以使用PuTTY 和xshell xff0c 本文使用xshell xff08 1 xff09 第一步 xff1a 配置服务器信息 打开xshell xff0c 新建连接 xff0c 在菜单 连接 填
  • Spring报错解决一览

    Spring错误持续更新贴 问题一 springcloud OAuth2 0配置的时候报错 Method springSecurityFilterChain in org springframework security config an

随机推荐