运行时错误:给定组=1,权重大小为[32,3,5,5],预期输入[1,32,3,784]有3个通道,但得到了32个通道 这是我的代码:
class Conv(nn.Module):
def __init__(self):
super().__init__()
#self.flatten=nn.Flatten()
self.conv1=nn.Conv2d(in_channels=3,out_channels=32,kernel_size=5,padding=0,stride=1)
self.relu1=nn.ReLU()
self.pool1=nn.MaxPool2d(kernel_size=2,stride=2)
self.conv2=nn.Conv2d(in_channels=32,out_channels=32,kernel_size=5,padding=0,stride=1)
self.relu2=nn.ReLU()
self.pool2=nn.MaxPool2d(kernel_size=2,stride=2)
self.flatten=nn.Flatten()
self.fc1=nn.Linear(in_features=32*4*4,out_features=128)
self.relu3=nn.ReLU()
self.fc2=nn.Linear(in_features=128,out_features=64)
self.relu4=nn.ReLU()
self.fc3=nn.Linear(in_features=64,out_features=7)
self.logSoftmax=nn.LogSoftmax(dim=1)
def forward(self,x):
x=self.conv1(x)
x=self.relu1(x)
x=self.pool1(x)
x=self.conv2(x)
x=self.relu2(x)
x=self.pool2(x)
x=self.flatten(x)
x=self.fc1(x)
x=self.relu3(x)
x=self.fc2(x)
x=self.relu4(x)
x=self.fc3(x)
out=self.logSoftmax(x)
return out```
请帮我解决这个问题。谢谢!!!
我尝试了 1 个通道,但仍然出现错误
在 nn.Linear 层中,您在卷积层之后使用
nn.Flatten()
展平输入,并且第一个线性层的输入特征数量计算为 32*4*4
。
您需要调整第一个线性层的输入特征,以匹配卷积层之后输入张量的实际大小。
更改第一个线性层 (self.fc1) 中的
in_features
参数 `
以下内容可能会有所帮助: 运行时错误:给定 groups=1,权重大小为 [16, 1, 3, 3],预期输入 [16, 3, 1, 28] 有 1 个通道,但得到了 3 个通道