Pytorch使用tensorboardX可视化。超详细!!!
tensorboard --logdir runs 改为 tensorboard --logdir=D:\model\tensorboard\runs
重点
在网上看了很多方法后发现将原本链接中的计算机名改为localhost,即http://localhost:6006/后能成功解决该问题,显示结果
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教程
![](https://upload-images.jianshu.io/upload_images/11159258-a77d58e691f595ce.png?imageMogr2/auto-orient/strip|imageView2/2/w/989/format/webp)
对上述代码进行解释,首先导入:from tensorboardXimport SummaryWriter,然后定义一个SummaryWriter() 实例。在SummaryWriter()上鼠标ctrl+b我们可以看到SummaryWriter()的参数为:def __init__(self, log_dir=None, comment='', **kwargs): 其中log_dir为生成的文件所放的目录,comment为文件名称。默认目录为生成runs文件夹目录。我们运行上述代码:生成结果为:
![](https://upload-images.jianshu.io/upload_images/11159258-3c718b3ecc35eddc.png?imageMogr2/auto-orient/strip|imageView2/2/w/429/format/webp)
当我们为SummaryWriter(comment='base_scalar')。生成结果为:
![](https://upload-images.jianshu.io/upload_images/11159258-904e070045744db0.png?imageMogr2/auto-orient/strip|imageView2/2/w/422/format/webp)
当我们为SummaryWriter(log_dir='scalar') 添加log_dir参数,可以看到第二条数据的文件名称包括了base_scalar值。生成结果目录为:
![](https://upload-images.jianshu.io/upload_images/11159258-cd52eb337ae3c312.png?imageMogr2/auto-orient/strip|imageView2/2/w/432/format/webp)
接着解释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 参数值
![](https://upload-images.jianshu.io/upload_images/11159258-b8ebddc1b1c61e34.png?imageMogr2/auto-orient/strip|imageView2/2/w/656/format/webp)
最后调用writer.close()。
点击链接即可看到我们的最终需要的可视化结果。
![](https://upload-images.jianshu.io/upload_images/11159258-664dfb5412e39d58.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
可以分别点击对应的图片查看详情。可以看到生成的Scalar名称为'scalar/test'与'scalar/test'一致。注:可以使用左下角的文件选择你想显示的某个或者全部图片。
3.2 Graph教程
![](https://upload-images.jianshu.io/upload_images/11159258-a242c4556231abb7.png?imageMogr2/auto-orient/strip|imageView2/2/w/562/format/webp)
首先我们定义一个神经网络取名为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控制台,可得到如下结果。
![](https://upload-images.jianshu.io/upload_images/11159258-e136bcb7b436b208.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
点击Net1部分可以将其网络展开,查看网络内部构造。
![](https://upload-images.jianshu.io/upload_images/11159258-ccea3de6e56c89b8.png?imageMogr2/auto-orient/strip|imageView2/2/w/553/format/webp)
其他部分可以继续一次展开查看详情。
3.3 网络训练综合教程
解释完上述两部分知识之后,我们可以综合运用上述两部分内容,实现线性拟合的训练过程中的loss可视化和模型的保存。
![](https://upload-images.jianshu.io/upload_images/11159258-e4e63e84aefe4cd6.png?imageMogr2/auto-orient/strip|imageView2/2/w/745/format/webp)
![](https://upload-images.jianshu.io/upload_images/11159258-0a6f28bd5b0f5aac.png?imageMogr2/auto-orient/strip|imageView2/2/w/826/format/webp)
我们将运行过程中loss和model分别保存,最后打开tensorboard控制台,可以得到模型结果和loss的结果为下图.
![](https://upload-images.jianshu.io/upload_images/11159258-61e002e3e1a48b49.png?imageMogr2/auto-orient/strip|imageView2/2/w/880/format/webp)
注:不同的graph的可视化可以使用上图Run旁边的下拉框选择。
![](https://upload-images.jianshu.io/upload_images/11159258-4f94d5cccada2061.png?imageMogr2/auto-orient/strip|imageView2/2/w/1144/format/webp)
3.4 Tensorboard综合Demo
本Demo代码为TensorboardX提供的官方Demo代码。
![](https://upload-images.jianshu.io/upload_images/11159258-4c3ad748906c02b3.png?imageMogr2/auto-orient/strip|imageView2/2/w/757/format/webp)
![](https://upload-images.jianshu.io/upload_images/11159258-2cc32f1a77fbb603.png?imageMogr2/auto-orient/strip|imageView2/2/w/967/format/webp)
最终运行的所有可视化结果为:
![](https://upload-images.jianshu.io/upload_images/11159258-f7685ec5d75331c1.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
4 结束语
本文是我写的第一篇比较完整的文章,大家如果觉得帮助到了你,帮忙点个赞呗。
本文所有的代码链接为:https://github.com/miaoshuyu/pytorch-tensorboardx-visualization(对你有用的话,麻烦点个小星星呗)
若转载,请标明出处,谢谢!!
Pytorch使用tensorboardX可视化。超详细!!!的更多相关文章
- Pytorch的网络结构可视化(tensorboardX)(详细)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/xiaoxifei/article/det ...
- Ubuntu server16.04安装配置驱动418.87、cuda10.1、cudnn7.6.4.38、anaconda、pytorch超详细解决
目录 安装GCC 安装NVIDIA驱动 1. 卸载原有驱动(没装跳过) 2. 禁用nouveau 3. 安装NVIDIA显卡驱动 安装CUDA10.1 安装cudnn 安装anaconda 安装ten ...
- Pytorch在colab和kaggle中使用TensorBoard/TensorboardX可视化
在colab和kaggle内核的Jupyter notebook中如何可视化深度学习模型的参数对于我们分析模型具有很大的意义,相比tensorflow, pytorch缺乏一些的可视化生态包,但是幸好 ...
- [Pytorch]PyTorch使用tensorboardX(转
文章来源: https://zhuanlan.zhihu.com/p/35675109 https://www.aiuai.cn/aifarm646.html 之前用pytorch是手动记录数据做图, ...
- 一个基于TCP/IP的服务器与客户端通讯的小项目(超详细版)
1.目的:实现客户端向服务器发送数据 原理: 2.建立两个控制台应用,一个为服务器,用于接收数据.一个为客户端,用于发送数据. 关键类与对应方法: 1)类IPEndPoint: 1.是抽象类EndPo ...
- 原来你是这样的BERT,i了i了! —— 超详细BERT介绍(一)BERT主模型的结构及其组件
原来你是这样的BERT,i了i了! -- 超详细BERT介绍(一)BERT主模型的结构及其组件 BERT(Bidirectional Encoder Representations from Tran ...
- Anaconda安装tensorflow和keras(gpu版,超详细)
本人配置:window10+GTX 1650+tensorflow-gpu 1.14+keras-gpu 2.2.5+python 3.6,亲测可行 一.Anaconda安装 直接到清华镜像网站下载( ...
- 【转】(超详细)jsp与servlet之间页面跳转及参数传递实例
初步学习JavaEE,对其中jsp与Servlet之间的传值没弄清楚,查看网上资料,发现一篇超详细的文章,收获大大,特此记录下来.具体链接:http://blog.csdn.net/ssy_shand ...
- 超强、超详细Redis数据库入门教程
这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...
随机推荐
- netbeans7.4 在项目内查找 快捷键 ctrl shift f
- MySQL错误1055
问题描述:在MySQL数据库下,执行SQL插入语句报错.错误信息如下: 错误原因:在MySQL5.7之后,sql_mode中默认存在ONLY_FULL_GROUP_BY,SQL语句未通过ONLY_FU ...
- ucore os 前初始化
BIOS 初始化完成说起 连接的时候指定了 -Ttext 0x7c00 也指定了 -e start 所以booasm.S 中的start 就呗钦定为程序入口了. 开始就是 屏蔽中断 初始化段寄存器 使 ...
- angular可以做的小功能 未完成
1,网上购物满多少减多少 思路: 效果图,满500减10元邮费 1,html部分有基本布局, <div> <h3>化妆品</h3> 单价 <input typ ...
- Kth Minimum Clique
Kth Minimum Clique 题目描述 Given a vertex-weighted graph with N vertices, find out the K-th minimum wei ...
- 洛谷P2982 [USACO10FEB]慢下来Slowing down [2017年四月计划 树状数组01]
P2982 [USACO10FEB]慢下来Slowing down 题目描述 Every day each of Farmer John's N (1 <= N <= 100,000) c ...
- 创建动态MSSQL数据库表的方法
代码如下: ImportsSystem.Data ImportsSystem.Data.SqlClient PublicClassForm1 InheritsSystem.windows.Forms. ...
- 【python之路13】python的深浅拷贝
深浅拷贝 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 impor ...
- PHP配置环境中如何开启伪静态
1.在httpd.conf中引入httpd-vhosts.conf 2.在httpd.conf中开启mod_rewrite.so 3.在httpd-vhosts.conf中配置虚拟主机 AllowOv ...
- 关于502 bad gateway报错的解决办法