首页 > 解决方案 > RuntimeError:大小不匹配,m1:[4 x 3136],m2:[64 x 5] 在 c:\a\w\1\s\tmp_conda_3.7_1

问题描述

我使用了 python 3,当我插入变换随机裁剪大小 224 时,它给出了未匹配错误。

这是我的代码

我做错了什么?

标签: python-3.ximage-processingcomputer-visionpytorchresnet

解决方案


您的代码对resnet进行了更改:您更改了通道数量,每个“级别”的瓶颈数量,并且您完全删除了一个“级别”。结果,您在末尾拥有的特征图的维度layer3不是64:您的空间维度比您预期的要nn.AvgPool2d(8)。您收到的错误消息实际上告诉您输出的level3形状为64x 56x 56,并且在使用内核和步长 8 进行 avg 池化之后,您有64x 7x 7=3136维度特征向量,而不是您期望的只有 64。

你能做什么?
与“标准” resnet 不同,您删除了 strideconv1并且在conv1. 而且,你删除layer4了其中也有一个大步。因此,您可以在网络中添加池化以减少layer3.
或者,您可以替换nn.AvgPool(8)nn.AdaptiveAvgPool2d([1, 1])仅输出一个特征的 avg 池,而不管输入特征图的空间维度如何。


推荐阅读