收藏 | PyTorch模型训练特征图可视化(TensorboardX)

【pytorch】用tensorboardX可视化特征图 利用tensorflowX对特征图进行可视化,不同卷积层的特征图的抽取程度不一样的, # 利用tensorboardX可视化特征图 import torchvision.utils as vutils from tensorboardX import SummaryWriter writer = SummaryWriter(log_dir='logs', comment='feature map') for i,data in enumerate(trainloader, 0): # 获取训练数 阅读详情

仅作学术分享,不代表本公众号立场,侵权联系删除

转载于:作者丨Pascal@知乎

来源丨https://www.zhihu.com/people/pascal_cs/posts

0、前言

  • 本文所有代码解读均基于PyTorch 1.0,Python3;

  • 本文为原创文章,初次完成于2019.03,最后更新于2019.09;

最近复现的一篇论文一直都难以work,上了特征图可视化后一下子就找到了问题所在,所以今天想梳理一下PyTorch里面的特征图可视化。

大家都知道Tensorflow有一款非常优秀的可视化工具Tensorboard,而PyTorch自身没有可视化功能,但是我们可以寻找替代品,即TensorBoardX。安装过程不多介绍,详见下面的参考链接,里面相应有比较丰富的介绍。

tensor-yu/PyTorch_Tutorial
https://github.com/tensor-yu/PyTorch_Tutorial

1、Loss可视化

最常见的可视化就是loss曲线作图,这个实现相对比较简单,不多做介绍了

tb_logger.add_scalar('loss_train', loss, curr_step)

2、输入图片和标签的可视化

模型不work,第一个应该检查的就是输入输出有没有没给对,因此我们需要将传递给model的 input 和 label 可视化一下。

传递给网络的图片格式往往是 [B,C,H,W] ,范围[0, 1],数据类型tensor.FloatTensor,但是add_iamge() 能够接受的格式是[C,H,W], 范围[0,1],数据类型tensor.FloatTensor。

一个是三维的,一个是四维的,这很好解决,我们把每个batch的第一张图拿出来就行了:input[0]的形状就是[C,H,W],符合输入要求。

tb_logger.add_image('image', input[0], curr_step)

tensoroard里面如果出现了猫咪本尊的正确可视化结果,就说明输入图片没问题

如果你在Dataloader里对输入图片做了Normalize,显示会出现问题,出现如下所示的乱码,此时需要通过make_grid()函数做一些处理,函数用法具体可见后面的描述。

3、单通道特征图的可视化

有时候我们需要把网络内部分节点的特征图可视化出来,这时候上面的方法就不能用了,因为特征图的每个像素点上的数值范围不是[0,1],而是可正可负,可大可小,因此需要做一些特殊处理。这里就要用到 torchvision.utils.make_grid( )函数,把输入的特征图做一个归一化,把参数normalize设置为True即可,它能帮我们把数据的输入范围调整至[0, 1]之间

def make_grid(tensor, nrow=8, padding=2,              normalize=False, range=None, scale_each=False, pad_value=0):

更多其他参数的用法参见源码:

https://github.com/pytorch/vision/blob/master/torchvision/utils.py

这里我把三个中间特征图拼在了一块显示:

from torchvision.utils import make_gridtb_logger.add_image('feature_map', make_grid([feature_map1, feature_map2, fetare_map3], padding=20, normalize=True, scale_each=True, pad_value=1), curr_step)

需要注意的是:

  • make_grid() 输入的是Tensor,而不是numpy.ndarray

  • torchvision.utils.make_grid() 将一组图片绘制到一个窗口,其本质是将一组图片拼接成一张图片

4、多通道特征图的可视化

多通道的特征图的显示和上面的单通道存在一些区别,假设我们从batsh_size=16,channel=20的一个tensor想取出一个多通道特征图可视化,只需要如下操作

feature_map[0].deatch().cpu().unsqueeze(dim=1)

这样就能把一个形状为 [16,20, H, W] 的tesnor取出并转换为 [20, 1, H ,W] 的形状,这与为什么要这么转换,详解第五章节。

完整代码和如下:

tb_logger.add_image('channels', make_grid(feature_map[0].detach().cpu().unsqueeze(dim=1), nrow=5, padding=20, normalize=False, pad_value=1), curr_step)

5、make_grid()通道数的问题

测试发现,输入 [1, H, W] 的数据没问题,但是[20, H, W] 就不行,[20, 1, H, W] 就可以

这是因为单通道 [1, H, W] 不存在歧义,但是多通道就不行,比如说[3, H, W] 到底是一张三通道的图还是三张单通道的图,存在歧义

因此想要显示一张多通道的特征图可以这么转换:[1, C, H, W] --> [C, 1, H, W],显性地指明tensor形状。

6、总结

特征图可视化在模型复现过程中十分有用,可用于定位模型错误所在,但是在tensor的数据格式、尺寸、维度上存在许多讲究,使用时需要额外小心。

附录一:相关函数源码

其实想要熟练使用,还是多看看make_grid的源码和样例吧:

https://github.com/pytorch/vision/blob/master/torchvision/utils.py

https://gist.github.com/anonymous/bf16430f7750c023141c562f3e9f2a91

附录二:网络结构可视化工具

Caffe网络可视化工具

Netscope
https://ethereon.github.io/netscope/%23/editor

PyTorch等网络的可视化工具

https://github.com/waleedka/hiddenlayer

大概是这么个效果,相对清晰一些

end

图像处理特征可视化方法总结(特征图、卷积核、类可视化CAM)(附代码) 图像处理特征可视化方法总结(特征图、卷积核、类可视化CAM 阅读详情

相关推荐

CNN可视化技术总结(一)--特征图可视化

导言: 在CV很多方向所谓改进模型,改进网络,都是在按照人的主观思想在改进,常常在说CNN的本质是提取特征,但并不知道它提取了什么特征,哪些区域对于识别真正起作用,也不知道网络是根据什么得出了分类结果。 如在上次解读的一篇论文《Feature Pyramid Transformer》(简称FPT)中,作者提出背景信息对于识别目标有重要作用,因为电脑肯定是在桌上,而不是水里,大街上,背景中的键盘鼠标的存在也能辅助区分电脑与电视机,因此作者提出要使用特征金字塔融合背景信息。从人的主观判...

CV技术指南(微信公众号) 6634

深度学习笔记:卷积神经网络的可视化--特征图

特征图的可视化,是指对于给定输入图像,展示模型处理后的各中间层(包括卷积层和池化层等)输出的特征图(各中间层的激活函数的输出代表该层特征图)。这让我们可以看到输入数据在网络中是如何被分解,不同滤波器分别聚焦于原始图像的什么方面的信息。我们希望在三个维度对特征图进行可视化:宽度、高度和深度(通道,channel)。每个通道都对应相对独立的特征。所以将这些特征图可视化的正确方法是将每个通道的内容分别会支持成二维图像。

chenxy_bwave的专栏 4万+

pytorch,特征图feature map的可视化

PyTorch中的特征图(feature map)是由卷积神经网络(CNN)生成的,它们是在CNN中的不同层次中提取的高级特征。可视化特征图可以帮助我们理解CNN在图像分类任务中的行为,以及在调试和优化CNN时提供有用的信息。

q742971636的博客 3734

【Pytorch】 特征图的可视化

快速上手特征图的可视化

capsule的博客 3万+

VASP吸附计算1:CO在Pt(111)面的吸附|Materials Studio建模

介绍用VASP计算CO-Pt体系电荷密度的流程。

weixin_50519490的博客 5945

kali攻防第2章 内网称霸之渗透安卓系统

Kali内网称霸之渗透安卓系统   准备工具   1、准备一部实体android手机 2、使用KALI系统     要用到强大的msf工具(metasplot)   流程步骤 1、启动msf命令是msfconsole 2、在安卓手机上安装一个自己生成的apk木马程序 3、利用msf工具来远程连接Android系统   1)启动msf(注意这里是链接msf就行了不需要进

安全参透之旅 1万+

【pytorch训练】tensorboardX安装及使用

做为Tensorflow中强大的可视化工具,已经被普遍使用。但针对其余框架,例如Pytorch,以前一直没有这么好的可视化工具可用,PyTorch框架自己的可视化工具是Visdom,但是这个API需要设置的参数过于复杂,而且功能不太方便也不强大,所以有人写了一个库函数来让PyTorch也可以使用tensorboard。

All_In_gzx_cc的博客 1万+

Cadence Allegro 17.4学习记录开始02-原理图Capture CIS 17.4

Allegro的第一方网表与第三方网表有以下几个区别点;Ø 与Allegro实现交互式操作的是第一方网表,第三方网表时不可以实现交互式操作;Ø 第三方网表不能将器件的Value属性导入到PCB中,输出时以封装属性来代替Value属性,第一方网表是可以的;Ø 网表导入到PCB中时,第三方的网表需要指定事先指定好PCB封装库文件,并产生Device文件,才可以将网表导入到PCB中,第一方网表则可以直接导入。

qq_31444421的博客 1万+

PyTorch模型训练特征图可视化(TensorboardX)

点击上方“机器学习与生成对抗网络”,关注"星标"获取有趣、好玩的前沿干货!作者丨Pascal@知乎编辑丨极市平台来源丨https://www.zhihu.com/pe...

idol24的博客 2596

利用setEcoMode优化innovus中的ecoAddRepeater批量操作效率

本文详细介绍了在Cadence Innovus工具中,如何利用setEcoMode命令的batchMode参数,显著提升ecoAddRepeater命令在批量插入buffer或inverter时的操作效率。通过合并重复的初始化和数据库更新开销,该模式可将大规模时序修复操作的执行速度提升数倍,并提供了完整的脚本示例与最佳实践,帮助后端设计工程师优化ECO流程。

mango的博客 514

TP4056在单节锂电池充电管理中的创新应用与电路优化

本文深入探讨了TP4056线性充电管理芯片在单节锂电池充电电路中的创新应用与优化方案。针对“边充边用”的核心挑战,文章详细解析了利用PMOS管构建智能供电切换电路的原理,实现了外部电源与电池供电的无缝、安全切换,有效杜绝了电池“边充边放”的风险。同时,提供了关键的元器件选型、PCB布局布线技巧及常见问题排查指南,为创客和硬件开发者提供了高性价比、高可靠性的锂电池电源管理实践方案。

rock5的博客 501

PyTorch-训练可视化

介绍使用TensorBoardX对PyTorch模型训练进行可视化监控。

周先森爱吃素的博客 8521

5款高性价比LDO芯片实测对比:从TPS7A4501到LM2940,哪款更适合你的项目?

本文通过实测对比了TPS7A4501、TPS72301、LM2937、LM2940等五款高性价比LDO芯片的核心性能。文章详细分析了跌落电压、输出噪声、静态电流及热性能等关键指标,并结合电池供电物联网节点、高精度数据采集等典型应用场景,提供了清晰的选型指南,帮助工程师根据项目需求选择最合适的LDO芯片。

weixin_29305337的博客 116

pytorch 画loss曲线_PyTorch模型训练特征图可视化(TensorboardX)

0、前言本文所有代码解读均基于PyTroch 1.0,Python3;本文为原创文章,初次完成于2019.03,最后更新于2019.03;最近复现的一篇论文一直都难以work,上了特征图可视化后一下子就找到了问题所在,所以今天想梳理一下PyTorch里面的特征图可视化。大家都知道Tensorflow有一款非常优秀的可视化工具Tensorboard,而PyTorch自身没有可视化功能,但是我们可以寻...

weixin_39638305的博客 3530

第三篇:NVIDIA cuOpt Python API 详解:LP、QP、MILP 建模与求解,附核心术语名词解释

NVIDIA cuOpt是一款GPU加速的优化求解库,支持LP、QP、MILP和路径优化问题。本文详细介绍了其Python API使用方法,包括核心类Problem的变量定义、约束添加、目标设置和求解配置,并提供了术语解释。cuOpt通过GPU并行计算大幅提升大规模优化问题的求解效率,支持多种求解算法和参数配置,适用于需要高性能计算的优化场景。安装方式包含pip和Docker两种,验证安装后即可快速开始建模求解。

算法工程师 236

软考高级-系统架构设计师 知识点整理 (一篇就够了 建议收藏)

软考高级-系统架构设计师知识点整理---十万字总结,助你通过高级

片言可决讼,半纸能缚龙 7356

pytorch使用tensorboardX做可视化(二)特征图可视化

因为要对网络里的layer操作,所以网络层命名发生了一些改变 LeNet5.py import torch.nn as nn import numpy as np import torch from collections import OrderedDict #定义lenet5 class LeNet5(nn.Module): def __init__(self, num_clases=10): super(LeNet5, self).__init__()

zjh12312311的博客 2002

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

pytorch tensorboardX 可视化特征图(多通道)

主要是借助tensorboardX中的writer.add_image和torchvision.utils中的make_grid来生成的。 主要代码: extract_result[i]=extract_result[i].permute(1,0,2,3).cpu() #1,c,h,w--->c,1,h,w extract_result[i]=make_grid(extract_result[i]) #concat the images writer.ad

rocking_struggling的博客 3930

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

PyTorch 模型训练实用教程(六):监控模型——可视化

本章将介绍如何在 PyTorch 中使用 TensorBoardX 对神经网络进行统计可视化,如Loss 曲线、Accuracy 曲线、卷积核可视化、权值直方图及多分位数折线图、特征图可视化、梯度直方图及多分位数折线图及混淆矩阵图等。 TensorBoardX PyTorch 自身的可视化功能没有 TensorFlow 的 tensorboard 那么优秀,所以 PyTorch通常是借助 tensorboard(是借助,非直接使用)进行可视化,目前流行的有如下两种方法,本文仅介绍第二种——Ten...

qq_38156104的博客 7033

从特征图到损失曲线:用TensorBoardX全面诊断PyTorch模型训练问题

本文详细介绍了如何使用TensorBoardX全面诊断PyTorch模型训练问题,从特征图可视化到损失曲线分析。通过hook函数捕获特征图、监控梯度分布和多维训练指标,帮助开发者精准定位模型性能瓶颈,提升训练效率。特别适合需要深度调试PyTorch模型的AI工程师和研究人员。

sea99的博客 625

c++可视化_PyTorch模型训练特征图可视化(TensorboardX)

0、前言本文所有代码解读均基于PyTroch 1.0,Python3;本文为原创文章,初次完成于2019.03,最后更新于2019.03;最近复现的一篇论文一直都难以work,上了特征图可视化后一下子就找到了问题所在,所以今天想梳理一下PyTorch里面的特征图可视化。大家都知道Tensorflow有一款非常优秀的可视化工具Tensorboard,而PyTorch自身没有可视化功能,但是我们可以寻...

weixin_39540315的博客 198

PyTorch网络可视化实战:利用tensorboardX解析模型结构

本文详细介绍了如何使用tensorboardX工具实现PyTorch神经网络结构的可视化。通过实战演示,从环境安装、核心API使用到自定义模型与复杂网络的可视化,帮助开发者直观理解模型内部数据流、验证结构设计并高效调试,是提升深度学习开发效率的关键技能。

wine的专栏 976

使用 TensorBoardX 实现 PyTorch 神经网络可视化:从入门到进阶

支持丰富的可视化类型:scalar(标量)、image(图像)、histogram(直方图)、audio(音频)、text(文本)、graph(计算图)、embedding(嵌入向量)、pr_curve(PR曲线)等。与 TensorBoard 完美兼容:可以无缝使用 TensorBoard 的 Web 界面进行数据展示。简单易用的接口设计:通过类即可实现数据写入与可视化。TensorBoardX 作为 PyTorch 的可视化利器,极大地提升了模型开发和调试的效率。

钢铁男儿 903

add函数 pytorch_PyTorch模型训练特征图可视化(TensorboardX)

0、前言本文所有代码解读均基于PyTroch 1.0,Python3;本文为原创文章,初次完成于2019.03,最后更新于2019.03;最近复现的一篇论文一直都难以work,上了特征图可视化后一下子就找到了问题所在,所以今天想梳理一下PyTorch里面的特征图可视化。大家都知道Tensorflow有一款非常优秀的可视化工具Tensorboard,而PyTorch自身没有可视化功能,但是我们可以寻...

weixin_39710041的博客 184
上一篇: 一份火爆国外的PyCharm快捷键和Python代码速查表
下一篇: ImageNet训练再创纪录!谷歌提出1个小时训练EfficientNet,准确率高达83%!
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值