tensorboardx可视化_tensorboardX学习

这篇博客介绍了如何使用TensorboardX在PyTorch环境中进行数据可视化,包括损失(loss)、准确率(accuracy)和模型结构。通过SummaryWriter记录信息,展示了在MNIST数据集上的应用,并提醒了在添加模型图时模型不能在GPU上。还提到未来计划学习显示图片的功能,并在GitHub上分享了完整代码。
摘要由CSDN通过智能技术生成

合理利用工具很关键,这样就不用自己用matplotlib画图咯!之前使用的是tensorflow的,不过现在主要都是使用pytorch了,故记录一下~

官方教程在:

https://github.com/lanpa/tensorboardX​github.com

主要依赖:

d0d5d0f9a1c065bd59d2cb0ae3cc8b68.png

别忘了pip install tensorflow. 这里可以使用清华源,不过后面千万不要加上-user参数,不然conda会帮你安装到C:UsersAdministratorAppDataRoaming 上,相当于又多了一个python环境,很容易出错!如果后面使用的时候说找不到tensorboard程序,不用想肯定是环境变量的问题了。

pip --default-timeout=1000 install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu

from tensorboardX import SummaryWriter

最基本的东西,定义writer来记录哪些东西是要显示出来的。比如说定义一个简单的一元函数.

from tensorboardX import SummaryWriter

if __name__ == '__main__':
    # writer = SummaryWriter('../runs/scalar_example_09')
    writer = SummaryWriter('../runs/scalar_example_0914')
    for i in range(10):
        writer.add_scalar('my_value_1', i + 1, global_step=i)
        writer.add_scalar('my_value_2', i * 10, global_step=i)
  • SummaryWriter()定义存放的地址,就是后面tensorboard --logdir path path;如果直接不加任何东西,返回的是以时间命名的文件,如果是云服务器,后面还会加上主机的名字,比如我的:Sep14_16-15-26_cht-1998-79;
  • add_scalar(name, value, xticks) 这个就相当于画图而已;

运行程序后就可以看看效果了:

3538cf3554af286f4b8b43251c3ffe80.png

其中左侧的Smoothing(平滑),数据平滑其实经常用到(简单理解就是:一个滑动窗口求平均或者某一些操作,使得数据看起来变化幅度不大),不过这里本来就很平滑了,效果变化不大。

画图这里暂时先学到这里,时间问题以后有需要在进行学习。接下来还有一个重要的部分就是可视化模型结构。

直接上代码,记得传入的参数是(module, input), 输入必须存在, 多个输入就用tuple/list:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2020/9/15 8:56
# @Author  : CHT
# @Blog    : https://www.zhihu.com/people/xia-gan-yi-dan-chen-hao-tian
# @Site    : 
# @File    : demo2_module.py
# @Function: 
# @Software: PyCharm


import numpy as np
import torch
import torch.nn as nn
from tensorboardX import SummaryWriter


class Discriminator(nn.Module):
    def __init__(self, in_feature):
        super(Discriminator, self).__init__()
        self.ad_layer1 = nn.Linear(in_feature, 1024)
        self.ad_layer2 = nn.Linear(1024, 1024)
        self.ad_layer3 = nn.Linear(1024, 1)
        self.sigmoid = nn.Sigmoid()
        self.main = nn.Sequential(
            self.ad_layer1,
            nn.BatchNorm1d(1024),
            nn.LeakyReLU(0.2, inplace=True),
            self.ad_layer2,
            nn.BatchNorm1d(1024),
            nn.LeakyReLU(0.2, inplace=True),
            self.ad_layer3,
            self.sigmoid
        )

    def forward(self, x):
        for module in self.main:
            x = module(x)
        return x


if __name__ == '__main__':
    discriminator = Discriminator(in_feature=500)
    d_input = torch.zeros(3, 500)
    writer = SummaryWriter('../runs/module_example_0915')

    writer.add_graph(discriminator, d_input, True)

效果如下,十分清晰,连batchnormmoving average都能够显示出来:

3b706943fc0c558c5c14a37bfb8e9a8d.png

构建一个完整的流程,识别MNIST数据集,显示loss与accuracy.

注意add_graph这里好像模型不能是cuda上的,不然会报错!!!

效果如下:

d32463e00639393ce35f3c4895559624.png

完整代码已上传到github:

https://github.com/cht619/tensorboardX-mnist​github.com

后续还会加上显示图片等功能,时间问题现在(2020/09/15)还没学习到。

更新:在使用诸如GAN之类的网络,就是说每个网络之间没有联系,无需用sequential layer进行连接起来,但是却不能同时展示两个网络,搜了一下原来作者也关注了这个问题,不知道谁有很好的方法可以 add_grap() multiple timesn呢?欢迎告知~

issue: https://github.com/lanpa/tensorboardX/issues/319 目前看到的笨方法就是把多个网络写在一个class里,然后return多个输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值