PyTorch可视化工具-Tensorboard在线查看训练曲线、网络结构图等
- 1 安装
- 2 如何调用
- 3 如何查看
- 4 实战
- 4.1 代码调用
- 4.2 查看
- 1 SCALARS 训练曲线
- 2 多次训练曲线对比
- 3 IMAGES
- 4 CRSPHS 模型图
- 5 问题与解决
- 6 工程文件、数据集、源码下载
1 安装
- ubuntu/window下安装:
- 在指定的conda环境下比如之前教程提到的mvs下,在终端输入:
pip install tensorboard
2 如何调用
- 模块加载
from torch.utils.tensorboard import SummaryWriter
#实例化SummaryWriter,定义logdir为log即输出路径
writer = SummaryWriter('./log')
#输出图像
writer.add_image
#输出loss
writer.add_scalar
#输出模型结构
writer.add_graph
- 运行train.py后,会在./log文件夹下保存一个文件类似 events.out.tfevents.xxx
3 如何查看
在终端输入:tensorboard --logdir=./log
会返回一个网址
浏览器中打开:http://localhost:6006/
4 实战
在上一节手写字识别的代码上,增加可视化
深度学习 pytorch手写数字识别 MNIST数据集 解析+详细注释
4.1 代码调用
train.py开头导入SummaryWriter,并实例化对象
#PyTorch可视化工具-Tensorboard
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter(log_dir = './log') #实例化SummaryWriter,定义logdir为log即输出路径
在前前向传播前面,添加#输出图像 writer.add_image
img_grid = torchvision.utils.make_grid(images) #to convert a batch of tensor into 3xHxW formatwriter.add_image('mnist_images',img_grid) #输出图像
在反向传播后面,添加#输出loss writer.add_scalar
writer.add_scalar('loss',loss.item(),i+epoch*total_step)#输出loss
在模型初始化下面,添加#输出模型结构 writer.add_graph
这里要注意,如果cuda可用,要转换成cuda类型,否则用cpu模型
#输出模型结构
if torch.cuda.is_available():graph_inputs = torch.ones((1,1,28,28)).type(torch.FloatTensor).cuda()
else:graph_inputs = torch.ones((1,1,28,28)).type(torch.FloatTensor)
writer.add_graph(model, (graph_inputs,))# graph_inputs = torch.ones((1,1,28,28),dtype = torch.float32)
# writer.add_graph(model,graph_inputs)#输出模型结构
4.2 查看
在终端输入:tensorboard --logdir=./log
在浏览器打开返回的地址
1 SCALARS 训练曲线
2 多次训练曲线对比
每次训练会生成一个log,默认只显示最后一次曲线
将历史生成的log,分别放在不同的文件夹里,每个文件件放一个,如图
刷新网页,就可以看到历史版本曲线,可以选择要显示的版本,就行对比分析
3 IMAGES
IMAGES是每个batch的数据,
batch_size = 100 #一次送入100个数据;
这里batch=100,下面图片显示100个28*28的小图拼接而成
4 CRSPHS 模型图
CRSPHS 查看网络结构,双击进入
可以看到2层卷积
选中子网络双击,可以查看内部结构;
5 问题与解决
刚开始没有判断,gpu还是cpu模型
graph_inputs = torch.ones((1,1,28,28),dtype = torch.float32)
writer.add_graph(model,graph_inputs)#输出模型结构
报错如下,
RuntimeError: Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be the same
根据报错内容可以看出Input type为torch.FloatTensor(CPU数据类型),而weight type(即网络权重参数这些)为torch.cuda.FloatTensor(GPU数据类型)。这是由于你使用的是在GPU上训练出的模型参数,但是在cpu上测试时并没有将该模型参数映射到cpu上。
解决办法1:
将graph_inputs,转换为cuda类型
graph_inputs = torch.ones((1,1,28,28),dtype = torch.float32)
转换后
graph_inputs = torch.ones((1,1,28,28)).type(torch.FloatTensor).cuda()
解决办法2:
if 判断,如果cuda可用,要转换成cuda类型,否则用cpu模型;
将原来语句改为
#输出模型结构,这里要注意,如果cuda可用,要转换成cuda类型,否则用cpu模型
if torch.cuda.is_available():graph_inputs = torch.ones((1,1,28,28)).type(torch.FloatTensor).cuda()
else:graph_inputs = torch.ones((1,1,28,28)).type(torch.FloatTensor)
writer.add_graph(model, (graph_inputs,))
6 工程文件、数据集、源码下载
PyTorch可视化工具-Tensorboard在线查看训练曲线、网络结构图等相关推荐
- Pytorch可视化工具 —— TensorBoard
1.TensorBoard简介 TensorBoard:TensorFlow中强大的可视化工具: 支持标量.图像.文本.音频.视频和Embedding等多种数据可视化: 在学习TensorBoard之 ...
- PyTorch框架学习十五——可视化工具TensorBoard
PyTorch框架学习十五--可视化工具TensorBoard 一.TensorBoard简介 二.TensorBoard安装及测试 三.TensorBoard的使用 1.add_scalar() 2 ...
- 【深度学习】模型训练过程可视化思路(可视化工具TensorBoard)
[深度学习]模型训练过程可视化思路(可视化工具TensorBoard) 文章目录 1 TensorBoard的工作原理 2 TensorFlow中生成log文件 3 启动TensorBoard,读取l ...
- 如何发现「将死」的ReLu?可视化工具TensorBoard助你一臂之力
深度学习模型训练中会出现各种各样的问题,比如梯度消失.梯度爆炸,以及 Dying ReLU.那么如何及时发现这些问题并找出解决方案呢?本文以 Dying ReLU 问题为例,介绍了如何使用可视化工具 ...
- PyTorch 可视化工具Visdom
参考链接:使用 Visdom 在 PyTorch 中进行可视化 PyTorch 可视化工具 Visdom 介绍 Visd ...
- 详解PyTorch可视化工具visdom(一)
一.介绍 在深度学习领域,模型训练是一个必须的过程,因此常常需要实时监听并可视化一些数据,如损失值loss,正确率acc等.在Tensorflow中,最常使用的工具非Tensorboard莫属:在Py ...
- 谷歌开源NLP模型可视化工具LIT,模型训练不再「黑箱」
视学算法报道 编辑:陈萍.魔王 转载自公众号:机器之心 深度学习模型的训练就像是「黑箱操作」,知道输入是什么.输出是什么,但中间过程就像个黑匣子,这使得研究人员可能花费大量时间找出模型运行不正常的原因 ...
- PyTorch可视化工具:GPU内存分配
本文来源 机器之心 编辑:杜伟 想要了解自己的 PyTorch 项目在哪些地方分配 GPU 内存以及为什么用完吗?不妨试试这个可视化工具. 近日,PyTorch 核心开发者和 FAIR 研究者 Z ...
- 3 win10环境下安装Pytorch可视化工具Visdom(亲测,欢迎交流)
0 Win10环境下安装Visdom可视化工具(亲测成功,欢迎交流) Visdom可视化工具: 本文测试安装环境为windows10+Anaconda+python3.7.10 (注意先装好Anaco ...
最新文章
- 上海交大c语言第一次作业,上海交大网络学院-计算机第一次作业及答案(含6次机会全部题目)-计算机基础的知识.docx...
- [pymongo] pymongo.errors.CursorNotFound Exception
- java equals 区别_Java中equals和==的区别
- SpringBoot中通过@Value获取自定义配置的值
- nginx lua示例
- 从一个案例看系统优化
- JavaFX 2 GameTutorial第4部分
- 使用匿名内部类实现方式二线程创建 java 1615474836
- 如何使用scikit-learn工具来进行PCA降维
- 仙人掌(cactus)
- SpringMVC返回JSON格式数据
- PE+Dism++组合实现操作系统的备份恢复给力。
- WIN10超级终端下载链接及使用教程
- 三、YUV422SP图像旋转
- Matlab读取图像数据并写入TXT
- 美团前端面试题(附答案)
- 微云同步盘 linux,微云同步盘pc版下载
- 社群活动——撬动用户参与意愿的7个指导原则
- 定风波·三月七日沙湖道中遇雨
- 2021全国电设(F题)openmv的图像识别之数字识别