首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何生成四维权重的四维输入?

如何生成四维权重的四维输入?
EN

Stack Overflow用户
提问于 2021-12-06 22:57:48
回答 1查看 107关注 0票数 0

我对深度学习非常陌生。我正在研究CIFAR10数据集,并创建了一个CNN模型,如下所示。

代码语言:javascript
复制
class Net2(nn.Module):
  def __init__(self):
    super(Net2, self).__init__()
    self.conv1 = nn.Conv2d(3, 32, 5, 1)
    self.fc1 = nn.Linear(32 * 5 * 5, 512)
    self.fc2 = nn.Linear(512,10)


  def forward(self, x):
    x = x.view(x.size(0), -1)
    x = F.max_pool2d(F.relu(self.conv1(x)),(2,2))
    x = F.relu(self.fc1(x))
    x = self.fc2(x)
    return x
    

net2 = Net2().to(device)

我的任务要求是创建一个模型,其中包括:

卷积层有32个滤波器,内核大小为5x5,步幅为1。

最大池层的内核大小为2x2和默认步幅。

ReLU激活层

线性层,输出512。

ReLU激活层

输出为10的线性层。

我想是我写的。但我认为我走错了路。请帮助我编写正确的模型,以及在Conv2d和线性层中这些参数背后的原因。

我从代码中得到的错误如下:

代码语言:javascript
复制
RuntimeError: Expected 4-dimensional input for 4-dimensional weight [32, 3, 5, 5], but got 2-dimensional input of size [1024, 3072] instead

请帮帮我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-07 00:36:56

代码有两个问题:

输入的

  1. 平坦化

X= x.view(x.size(0),-1)

卷积层需要一个四维输入维数(N,C,H,W),其中N是批次大小,C=3是通道数,(H,W)是图像的维数。通过使用上述语句,您将(1024,3,32,32)输入压平到(1024,3072).。

第一线性层中输入特征的

self.fc1 = nn.Linear(32 *5* 5,512)

对于(1024,3,32,32)输入的卷积层的输出尺寸将是(1024,32,28,28),并且在应用2x2最大池之后,它是(1024,32,14,14)。因此,线性层的输入特性应该是32x14x14=6272。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70252965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档