如何从PyTorch中获取过程特征图实例详解
作者:ViperL1 发布时间:2022-07-08 04:04:44
标签:pytorch,过程,特征图
一、获取Tensor
神经网络在运算过程中实际上是以Tensor为格式进行计算的,我们只需稍稍改动一下forward函数即可从运算过程中抓到Tensor
代码如下:
base_feature = self.extractor.forward(x) #正常的前向传递
feature=base_feature.detach() #抓取tensor
feature_imshow(feature) #展示函数(关键代码)
通过将过程张量赋值给一个临时变量,即可将其从前向传递中分离出来且不影响原来的前向传递函数,这种方法远比复杂的hook函数更实用。
将Tensor数据取到后到可视化还需要进行以下几步:
①类型转换
如果网络是在cuda中进行运算,则需要将提取到的tensor转换为cpu类型才能进行接下来的运算
inp = inp.cpu() #类型转换
②张量拆解
网络中的张量一般是高维度的,需要对其进行降维,一般降至两维即可进行显示。这里以Faster R-CNN中的resnet50特征提取网络为例:输出其特征图尺寸为:[1,1024,68,38],可以很明显的看出,第一维实际上是batch_size,在图像显示中不需要,可以直接去除;第二维1024则是网络提取到的特征图张数,故可以对第二维进行遍历;而第3,4维是特征图的尺寸,直接显示即可。
inp=inp.squeeze(0) #除去第一维
for i in range(len(inp)):
plt.imshow(transforms.ToPILImage()(inp[i])) #遍历第二维并将其转换为图像
③图像展示
选取你需要的特征图像,进行保存或使用plt进展示
完整的展示函数如下:
def feature_imshow(inp, title=None):
inp = inp.cpu()
inp=inp.squeeze(0)
print(inp.shape)
plt.figure(figsize=(12, 7))
for i in range(len(inp)):
plt.subplot(4, 5, i+1) #第一二个参数为图像个数,第三参数为图像位置
plt.imshow(transforms.ToPILImage()(inp[i]))
i+=1
plt.show()
plt.pause(0.001)
来源:https://blog.csdn.net/weixin_37878740/article/details/128584950


猜你喜欢
- 多的不说,看了代码就懂了!df = pd.DataFrame ({'a' : np.random.randn(6), &nb
- 记录应用程序的操作日志可以使用数据库、文本文件、XML文件等。我这里介绍的是使用 XML 文件记录操作日志。我觉得使用 XML 记录操作日志
- 数据库是数据的集合,与数学的集合论有密不可分的关系。为提高查询速度,我们可以:对数据表添加索引,以加快搜索速度;通过编程技巧最大限度地利用索
- 我们重要的数据是存放在MDF文件中的,如果LDF文件丢失,MDF文件没有丢失,那么数据也可以还原。如果LDF文件没有丢失,MDF文件丢失,且
- 效果展示效果展示素材展示一个为视频,另一个为像素大小不小于视频的封面。实现过程调用已启用的浏览器通过调用已启用的浏览器,可以实现直接跳过每次
- 问题一开始安装的Autoprefixer是最新版本的3.0.1,一波操作后发现无效想是不是因为没设置browsers?那就设置一下吧&quo
- PromisePromise能够处理异步程序。回调地狱JS中或node中,都大量的使用了回调函数进行异步操作,而异步操作什么时候返回结果是不
- 前言在线演示地址:http://haiyong.site/age-calculatorJavaScript提供了一些内置的日期和时间函数,有
- 在使用SQL Server 的过程,中由于经常需要从多个不同地点将数据集中起来或向多个地点复制数据,所以数据的导出,导入是极为常见的操作.我
- 工作中发现表单提交方便的问题,很多时候IE下提交好好的,打了火狐下就出现了问题,利用提交按钮就不成功了,于是利用JS的方式就成功了,也不知道
- ASP错误大全 Microsoft VBScript语法错误(0x800A03E9)-->内存不足 Microsoft VBScript语法
- 有时候,我们可能想在django中写一些代码来测试某些功能,我们希望在django项目中单独运行某个python文件来做这项测试工作。但是如
- 随着网络的发展,人们通过各种方式使用它。今天,网络购物,跟朋友或者不认识的人聊天,管理银行账户,以及一些日常应用,共享照片或视频,等等。事实
- 前言为了介绍python语言中pandas库在数据分析中的重要作用,本人打算以NBA球星勒布朗詹姆斯在2020-2021赛季常规赛个人数据为
- 在pytorch的CNN代码中经常会看到x.view(x.size(0), -1)首先,在pytorch中的view()函数就是用来改变te
- 本文实例讲述了Python使用add_subplot与subplot画子图操作。分享给大家供大家参考,具体如下:子图:就是在一张figure
- 前言本文主要给大家介绍的是关于在Python3使用PyMongo的方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细介绍:Mong
- 自个儿闲的发疯画几个老鼠的表情,送女朋友。。HOHO。经常欺负人。哎。其实被欺负是一种幸福。工作以美国时间为主,所以白天睡到晚上。我不傻,真
- 除了在SSMS中查看view,存储过程等定义,也可以使用下面的语句直接查询:SELECT object_definition(object_
- this指向当前作用域的对象,如果找不到,往上一层找,直到window。this 关键字很好用,很灵活,正因为很灵活,所以一不小心你就会掉进