运行时错误:给定组=1,权重大小为[32,3,5,5],预期输入[1,32,3,784]有3个通道,但得到了32个通道

问题描述 投票:0回答:1

运行时错误:给定组=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```

错误在这里: enter image description here

这是数据的形状: enter image description here

请帮我解决这个问题。谢谢!!!

我尝试了 1 个通道,但仍然出现错误

python pytorch conv-neural-network
1个回答
0
投票

在 nn.Linear 层中,您在卷积层之后使用

nn.Flatten()
展平输入,并且第一个线性层的输入特征数量计算为
32*4*4

您需要调整第一个线性层的输入特征,以匹配卷积层之后输入张量的实际大小。

更改第一个线性层 (self.fc1) 中的

in_features
参数 `

以下内容可能会有所帮助: 运行时错误:给定 groups=1,权重大小为 [16, 1, 3, 3],预期输入 [16, 3, 1, 28] 有 1 个通道,但得到了 3 个通道

© www.soinside.com 2019 - 2024. All rights reserved.