deep-learning - 在提取 vgg19 pytorch 特征时,“顺序”对象没有属性“特征”
问题描述
我正在尝试使用VGG19网络提取图像的特征(输出应该是暗淡的: [1 , 7 , 7 , 512] 每帧
这里是我使用的代码:
deep_net = models.vgg19(pretrained=True).cuda()
deep_net = nn.Sequential(*list(deep_net.children())[:-2])
deep_net.eval()
save_file_sample_path = '/media/data1/out.npy'
input_image = torch.zeros(1, 3, 224, 224)
output_feat = np.zeros(shape=[1, 49, 512])
with torch.no_grad():
im = default_loader('/media/data1/images/frame612.jpg')
im = transform(im)
input_image[0, :, :] = im
input_image = input_image.cuda()
output_feat = deep_net(input_image)
output_feat = output_feat.features[:-2].view(1, 512, 49).transpose(1, 2)
但我收到以下错误:
AttributeError:“顺序”对象没有属性“特征”
在线:
output_feat = output_feat.features[:-2].view(1, 512, 49).transpose(1, 2)
知道为什么这不再起作用了吗?以及如何解决?
谢谢!
解决方案
这是因为你正在重建deep_net
,nn.Sequential
所以它失去了属性features
。
deep_net = models.vgg19(pretrained=True)
deep_net.features
Sequential(
(0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): ReLU(inplace=True)
...
(36): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
)
deep_net = nn.Sequential(*list(deep_net.children())[:-2])
deep_net.features
AttributeError: 'Sequential' object has no attribute 'features'
您现在想要的等价物是:
list(deep_net.children())[0][:-2]
推荐阅读
- keras - 如何在 Keras 模型中实现一些可训练的参数,例如 Pytorch 中的 nn.Parameters()?
- sharepoint - 使用 Graph 或其他 API 获取 PowerApps 列表
- spring-boot - Spring Boot 2.0.5 版的 Liquid 模板编码问题
- python - NameError:名称“情绪”未定义
- z3 - 在 Z3Py 中满足 N 个约束中的 K 个
- google-app-maker - 根据在 Google 应用程序制造商中单击的按钮选择起始页
- asp.net - 在 Razor Pages 中绑定单选按钮组时出现问题
- python - Pandas Dataframe 中的动态列数据(由 Dataframe 填充)
- brute-force - 确定我正在使用的哈希类型以在 hashcat 中使用
- amazon-web-services - 如何在 CloudWatch 的仪表板上显示 AWS 服务的正常运行时间百分比?