python Pytorch -mat 1和mat 2形状不能相乘(3328 x13和9216 x4096)

e0bqpujr  于 2023-04-10  发布在  Python
关注(0)|答案(1)|浏览(146)

我是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分类器相乘,但我不太确定什么是有效的方法。
感谢任何帮助解决这个问题。
谢谢!

1bqhqjot

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)

相关问题