【发布时间】:2021-10-19 17:27:37
【问题描述】:
我正在尝试将最后一个卷积层的输出传递到 FCC 层,但我正在努力解决尺寸问题。默认情况下,网络使用 AdaptiveAvgPool2d(output_size=(6, 6)) 不允许我使用 torch.use_deterministic_algorithms(True) 来实现再现性目的。这是我得到的错误:
*mat1 dim 1 must match mat2 dim 0*
(10): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(11): ReLU(inplace=True)
(12): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)
)
(avgpool): AdaptiveAvgPool2d(output_size=(6, 6))
(classifier): Sequential(
(0): Dropout(p=0.5, inplace=False)
(1): Linear(in_features=9216, out_features=4096, bias=True)
输入张量为:[10, 3, 350, 350]。 最后一个 Conv2d/MaxPool2d 层的张量形状为:torch.Size([10, 256, 9, 9])。我假设 FCC 的输入数应为 256 x 9 x 9 = 20736,但效果不佳。
这也是我将输出从 CONV 层转发到 FCC 层的类:
class Identity(nn.Module):
def __init__(self):
super(Identity, self).__init__()
def forward(self, x):
print('SHAPE', np.shape(x))
return x
这个想法来自视频:https://www.youtube.com/watch?v=qaDe0qQZ5AQ&t=301s。 非常感谢您。
【问题讨论】:
标签: python machine-learning multidimensional-array neural-network pytorch