RuntimeError: mat1 and mat2 shapes cannot be multiplied (5x46656 and 50176x3)
RuntimeError: mat1 and mat2 shapes cannot be multiplied (5x46656 and 50176x3)
我正在尝试构建一个 cnn 模型,但在构建时出现 运行 时间错误。我的图像大小为 224x224x3,批量大小为 5,我有 3 类 个要预测。
class CNN(nn.Module):
def __init__(self):
super().__init__()
#5*3*224*224
self.conv1=nn.Conv2d(3,6,3,1)
self.relu1=nn.ReLU()
self.pool=nn.MaxPool2d(2)
#112*112*6
self.conv2=nn.Conv2d(6,16,3,1)
self.relu2=nn.ReLU()
self.fc1=nn.Linear(16*56*56,3)
def forward(self,x):
x=self.pool(self.relu1(self.conv1(x)))
x=self.pool(self.relu2(self.conv2(x)))
x=x.flatten(1)
x=self.fc1(x)
return x
我在训练期间遇到 运行 时间错误。我该如何解决这个问题?
考虑到您输入的大小,您的全连接层应该有 16*54*54
个神经元,而不是 16*56*56
。
self.fc1 = nn.Linear(16*54*54, 3)
或者,您可以使用一个惰性模块来推断所需的神经元数量:nn.LazyLinear
:
self.fc1 = nn.LazyLinear(3)
我正在尝试构建一个 cnn 模型,但在构建时出现 运行 时间错误。我的图像大小为 224x224x3,批量大小为 5,我有 3 类 个要预测。
class CNN(nn.Module):
def __init__(self):
super().__init__()
#5*3*224*224
self.conv1=nn.Conv2d(3,6,3,1)
self.relu1=nn.ReLU()
self.pool=nn.MaxPool2d(2)
#112*112*6
self.conv2=nn.Conv2d(6,16,3,1)
self.relu2=nn.ReLU()
self.fc1=nn.Linear(16*56*56,3)
def forward(self,x):
x=self.pool(self.relu1(self.conv1(x)))
x=self.pool(self.relu2(self.conv2(x)))
x=x.flatten(1)
x=self.fc1(x)
return x
我在训练期间遇到 运行 时间错误。我该如何解决这个问题?
考虑到您输入的大小,您的全连接层应该有 16*54*54
个神经元,而不是 16*56*56
。
self.fc1 = nn.Linear(16*54*54, 3)
或者,您可以使用一个惰性模块来推断所需的神经元数量:nn.LazyLinear
:
self.fc1 = nn.LazyLinear(3)