解决AttributeError: ‘tuple‘ object has no attribute ‘ data ‘问题

问题描述:

出现问题的地方:


原因:由于在网络模型中用来resize来恢复特征图,而用这个函数得到是tuple的数据类型,在保存成图片的时候,就会出现以下的问题

解决办法:

要解决这个办法涉及到两个知识点:

一、数据类型的转换 tuple--->tensor

利用torch.cat方法

import torch
 
# 假设模型输出的特征图为 featurep, feature 是一个 tuple
 
# 获取特征图个数
num_maps = len(feature)
 
# 打印原来的特征图信息
print("type feature_raw:", type(outs))
for out in feature:
    print(out.size())
print("len feature_raw:", num_maps)
 
# 按第 0 维度拼接特征图
feature = torch.cat([fm for fm in feature], dim=0)
 
# 检查特征图类型
print("type feature_map:", type(feature))
# 输出: <class 'torch.Tensor'>
 
# 检查特征图维度
print("size feature:", feature.size())

输出为:
 

type feature_raw: <class 'tuple'>
torch.Size([8, 32, 640, 640])
len feature_raw: 1


type feature_map: <class 'torch.Tensor'>
feature_map: torch.Size([8, 32, 640, 640])

二,如果在不用卷积的情况下如果将通道数压缩为1

img = torch.rand(4, 64, 192, 192)
print("size img:", img.size())
yasuo = torch.narrow(img, 1, 0, 1)
print("size yasuo:", yasuo.size())

打印的结果:

size img: torch.Size([4, 64, 192, 192])
size yasuo: torch.Size([4, 1, 192, 192])

这里选择不用卷积的情况压缩通道的原因是:此处是我在模型测试的时候需要输出中间特征图以作参考,考虑到卷积是权重并且模型的参数量不一样,故而选择这种不用卷积的情况将通道数压缩。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值