RuntimeError: size mismatch, m1: [4 x 3136], m2: [64 x 5] at c:\a\w\1\s\tmp_conda_3.7_1
RuntimeError: size mismatch, m1: [4 x 3136], m2: [64 x 5] at c:\a\w\1\s\tmp_conda_3.7_1
我使用了 python 3,当我插入 transform random crop size 224 时,它给出了 miss match 错误。
我做错了什么?
您的代码对 resnet: you changed the number of channels, the number of bottlenecks at each "level", and you removed a "level" entirely. As a result, the dimension of the feature map you have at the end of layer3
is not 64: you have a larger spatial dimension than you anticipated by the nn.AvgPool2d(8)
进行了修改。您得到的错误消息实际上告诉您 level3
的输出形状为 64
x56
x56
并且在使用内核和步幅 8 进行平均池化之后,您有 64
x7
x7
=3136
维特征向量,而不是你期望的只有 64。
你能做什么?
与 "standard" resnet 相反,您从 conv1
中删除了步幅,并且在 conv1
之后没有最大池。此外,您删除了 layer4
,这也有一个进步。因此,您可以在网络中添加池化以减少 layer3
.
的空间维度
或者,您可以将 nn.AvgPool(8)
替换为 nn.AdaptiveAvgPool2d([1, 1])
一个仅输出一个特征的平均池,而不管输入特征图的空间维度如何。
我使用了 python 3,当我插入 transform random crop size 224 时,它给出了 miss match 错误。
我做错了什么?
您的代码对 resnet: you changed the number of channels, the number of bottlenecks at each "level", and you removed a "level" entirely. As a result, the dimension of the feature map you have at the end of layer3
is not 64: you have a larger spatial dimension than you anticipated by the nn.AvgPool2d(8)
进行了修改。您得到的错误消息实际上告诉您 level3
的输出形状为 64
x56
x56
并且在使用内核和步幅 8 进行平均池化之后,您有 64
x7
x7
=3136
维特征向量,而不是你期望的只有 64。
你能做什么?
与 "standard" resnet 相反,您从 conv1
中删除了步幅,并且在 conv1
之后没有最大池。此外,您删除了 layer4
,这也有一个进步。因此,您可以在网络中添加池化以减少 layer3
.
的空间维度
或者,您可以将 nn.AvgPool(8)
替换为 nn.AdaptiveAvgPool2d([1, 1])
一个仅输出一个特征的平均池,而不管输入特征图的空间维度如何。