我是pytorch的初学者,我试图从预训练的alexnet模型的7个层中提取激活。当试图从fc 6层中提取激活时,出现以下错误:
image of the error
下面是我的代码,用于循环图像数组并尝试提取激活。
conv1 = alexnet.features[0:2](img_tensor)
conv2 = alexnet.features[2:5](conv1)
conv3 = alexnet.features[5:7](conv2)
conv4 = alexnet.features[7:9](conv3)
conv5 = alexnet.features[9:12](conv4)
fc6 = alexnet.classifier[0:2](conv5)
fc7 = alexnet.classifier[0:2](fc6)
我正在对每个图像应用以下变换
transform = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(
mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225]
)
])
据我所知,我需要调整conv 5层的大小,然后再将其与alexnet分类器相乘,但我不太确定什么是有效的方法。
感谢任何帮助解决这个问题。
谢谢!
1条答案
按热度按时间1bqhqjot1#
是的,你需要把它压平。你可以很容易地做到这一点:
conv5 = conv5.flatten(1)
虽然我不知道你为什么要一层一层地涂。我想你只是在学习。你可以一次涂完的。
编辑:我发现你还有一个错误,这里的
conv5 = alexnet.features[9:12](conv4)
应该是conv5 = alexnet.features[9:](conv4)
,记住权利是排他性的。还有fc7 = alexnet.classifier[0:2](fc6)
,我猜你是说fc7 = alexnet.classifier[2:4](fc6)
。