Pytorch使用tensorboardX网络结构可视化。超详细!!!

https://www.jianshu.com/p/46eb3004beca

1 引言

我们都知道tensorflow框架可以使用tensorboard这一高级的可视化的工具,为了使用tensorboard这一套完美的可视化工具,未免可以将其应用到Pytorch中,用于Pytorch的可视化。这里特别感谢Github上的解决方案: https://github.com/lanpa/tensorboardX

本文主要是针对该解决方案提供一些介绍。

TensorboardX支持scalar, image, figure, histogram, audio, text, graph, onnx_graph, embedding, pr_curve and videosummaries等不同的可视化展示方式,具体介绍移步至项目Github 观看详情。


2 环境安装

本教程代码环境依赖:

python 3.6+

Pytorch 0.4.0+

tensorboardX:   pip install tensorboardX、pip install tensorflow


3 代码教程

TensorboardX可以提供中很多的可视化方式,本文主要介绍scalar 和 graph,其他类型相似。

3.1 scalar教程

01_scalar_base.py 代码

对上述代码进行解释,首先导入:from tensorboardXimport SummaryWriter,然后定义一个SummaryWriter() 实例。在SummaryWriter()上鼠标ctrl+b我们可以看到SummaryWriter()的参数为:def __init__(self, log_dir=None, comment=‘‘, **kwargs): 其中log_dir为生成的文件所放的目录,comment为文件名称。默认目录为生成runs文件夹目录。我们运行上述代码:生成结果为:

当我们为SummaryWriter(comment=‘base_scalar‘)。生成结果为:

当我们为SummaryWriter(log_dir=‘scalar‘) 添加log_dir参数,可以看到第二条数据的文件名称包括了base_scalar值。生成结果目录为:

接着解释writer.add_scalar(‘scalar/test‘, np.random.rand(), epoch),这句代码的作用就是,将我们所需要的数据保存在文件里面供可视化使用。 这里是Scalar类型,所以使用writer.add_scalar(),其他的队形使用对应的函数。第一个参数可以简单理解为保存图的名称,第二个参数是可以理解为Y轴数据,第三个参数可以理解为X轴数据。当Y轴数据不止一个时,可以使用writer.add_scalars().运行代码之后生成文件之后,我们在runs同级目录下使用命令行:tensorboard --logdir runs. 当SummaryWriter(log_dir=‘scalar‘)的log_dir的参数值 存在时,将tensorboard --logdir runs 改为 tensorboard --logdir 参数值

最后调用writer.close()。

点击链接即可看到我们的最终需要的可视化结果。

可视化效果

可以分别点击对应的图片查看详情。可以看到生成的Scalar名称为‘scalar/test‘与‘scalar/test‘一致。注:可以使用左下角的文件选择你想显示的某个或者全部图片。

3.2 Graph教程

02_graph_model.py 代码

首先我们定义一个神经网络取名为Net1。然后将其添加到tensorboard可是可视化中。

with SummaryWriter(comment=‘Net1‘)as w:

w.add_graph(model, (dummy_input,))

我们重点关注最后两句话,其中使用了python的上下文管理,with 语句,可以避免因w.close未写造成的问题。推荐使用此方式。

因为这是一个神经网络架构,所以使用 w.add_graph(model, (dummy_input,)),其中第一个参数为需要保存的模型,第二个参数为输入值,元祖类型。打开tensorvboard控制台,可得到如下结果。

点击Net1部分可以将其网络展开,查看网络内部构造。

模型可视化结果

其他部分可以继续一次展开查看详情。

3.3 网络训练综合教程

解释完上述两部分知识之后,我们可以综合运用上述两部分内容,实现线性拟合的训练过程中的loss可视化和模型的保存。

03_linear_regression.py 代码

我们将运行过程中loss和model分别保存,最后打开tensorboard控制台,可以得到模型结果和loss的结果为下图.

模型可视化结果

注:不同的graph的可视化可以使用上图Run旁边的下拉框选择。

loss可视化结果

3.4 Tensorboard综合Demo

本Demo代码为TensorboardX提供的官方Demo代码。

demo.py

最终运行的所有可视化结果为:

最终可视化结果

4 结束语

本文是我写的第一篇比较完整的文章,大家如果觉得帮助到了你,帮忙点个赞呗。

本文所有的代码链接为:https://github.com/miaoshuyu/pytorch-tensorboardx-visualization(对你有用的话,麻烦点个小星星呗)

若转载,请标明出处,谢谢!!

原文地址:https://www.cnblogs.com/jfdwd/p/11445135.html

时间: 2024-11-05 16:18:07

Pytorch使用tensorboardX网络结构可视化。超详细!!!的相关文章

一个基于TCP/IP的服务器与客户端通讯的小项目(超详细版)

1.目的:实现客户端向服务器发送数据 原理: 2.建立两个控制台应用,一个为服务器,用于接收数据.一个为客户端,用于发送数据. 关键类与对应方法: 1)类IPEndPoint: 1.是抽象类EndPoint的实现类 2.Socket对象的RemoteEndPoint. LocalEndPoint都是这个类型 3.属性Address: 使用IPv4表示的地址 4.属性Port:使用int表示的端口 2)类Socket: 这个类即可以用于作服务器端的开发,又可以作客户端的开发 构造方法: 参数 Ad

[转帖]分层存储超详细解读,为什么大数据时代它已不可或缺

分层存储超详细解读,为什么大数据时代它已不可或缺 http://www.itpub.net/2019/10/16/3467/ 如今,分层存储已成为了一种常见的存储方法,它将数据存储在具有不同特性(如性能.成本和容量)的不同存储介质上.不同的存储媒介被分配到不同的层次结构中,其中最高性能的存储媒介被认为是第0层或第1层,然后是第2层.第3层等等. 0层或1层通常是由闪存或基于3D Xpoint技术的固态硬盘(SSD)组成,以此往下的存储层可能涉及高性能光纤通道或SAS驱动器(或RAID阵列),较低

[WinForm] VS2010发布、打包安装程序(超全超详细)

1. 在vs2010 选择"新建项目"→" 其他项目类型"→" Visual Studio Installer→"安装项目": 命名为:Setup1 . 这是在VS2010中将有三个文件夹, 1."应用程序文件夹"表示要安装的应用程序需要添加的文件: 2."用户的'程序'菜单"表示:应用程序安装完,用户的"开始菜单"中的显示的内容,一般在这个文件夹中,需要再创建一个文件用来存放

IntelliJ IDEA 12 创建Web项目 教程 超详细版

原文:IntelliJ IDEA 12 创建Web项目 教程 超详细版 IntelliJ IDEA 12 新版本发布 第一时间去官网看了下  黑色的主题 很给力 大体使用了下  对于一开始就是用eclipse的童鞋们 估计很难从eclipse中走出来 当然 我也很艰难的走在路上 ... 首先要说一点,在IntelliJ IDEA里面“new Project” 就相当于我们eclipse的“workspace”,而“new Module”才是创建一个工程. 这个和Eclipse有很大的区别 1.官

【转】图文cadence allegro16.6 超详细破解教程(附cadence16.6破解文件)

Win8下安装cadence allegro16.6出错的解决方法: 自从 cadence allegro 16.6 发布后小菜发现很多爱好电子设计的朋友寻找破解方法,所以小菜写了这篇文章,详细图文介绍了cadence allegro 16.6 的具体破解步骤.Win8.1发布了也有一段时间了,很多朋友升级到了此系统,本教程同样适用Win8下 和16.6以前版本的cadence的破解.为什么很多朋友Win8下破解出问题呢,原因是Win8系统默认很多运行库没有安装,cadence allegro的

Android自定义相机超详细讲解

Android自定义相机超详细讲解 转载请标明出处: http://blog.csdn.net/vinicolor/article/details/49642861: 由于网上关于Android自定义相机的文章写得不是太详细,Google官方的文档又说得不太容易理解,所以今天我来详细讲解一下Android自定义相机. 这篇文章主要写给一些刚刚接触Android的那些看官方API困难以及不太了解Android机制的同学们,所以熟练开发者可以绕道了. 最近在使用Camera类的时候发现居然被弃用了,

超全超详细的HTTP状态码大全

超全超详细的HTTP状态码大全 本部分余下的内容会详细地介绍 HTTP 1.1中的状态码.这些状态码被分为五大类: 100-199 用于指定客户端应相应的某些动作. 200-299 用于表示请求成功. 300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息. 400-499 用于指出客户端的错误. 500-599 用于支持服务器错误. 一些常见的状态代码为: 200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务器暂时不可用 以下提供了 HTTP 状

Oracle11超详细安装教程和配置

这篇博客主要是介绍一下Oracle数据的安装过程和简单的配置,帮助大家可以简单的让Oracle运行起来,只是一个基础的教程. 准备工作: 如果你以前装过Oracle数据库,而且安装目录要改变请先打开注册表编辑器里的: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\和HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Oracle11和它下面的几个.如果你没安装过Oracle产品的话在注册表里面的与Oracle有关的注册

IntelliJ IDEA 12 创建Web项目 教程 超详细版(转)

IntelliJ IDEA 12 新版本发布 第一时间去官网看了下  黑色的主题 很给力 大体使用了下  对于一开始就是用eclipse的童鞋们 估计很难从eclipse中走出来 当然 我也很艰难的走在路上 ... 首先要说一点,在IntelliJ IDEA里面“new Project” 就相当于我们eclipse的“workspace”,而“new Module”才是创建一个工程. 这个和Eclipse有很大的区别 1.官网下载下来的默认不是黑色的主题 这里需要修改一下 工具栏上的扳手图标 或