首页 > 解决方案 > 向CNN输入固定长度的帧序列

问题描述

我希望我的 pytorch CNN 将长度为 32x32 RGB 图像的序列作为输入,这些SEQ_LEN图像沿通道维度连接。因此,网络的单个输入具有 shape (32, 32, 3, SEQ_LEN)。我应该如何定义我的 CNN 输入层?

常见的方式

SEQ_LEN = 10
input_conv = nn.Conv2d(in_channels=SEQ_LEN, out_channels=32, kernel_size=3)

BATCH_SIZE = 64
frames = np.random.randint(0, 255, size=(BATCH_SIZE, SEQ_LEN, 3, 32, 32))
frames_tensor = torch.tensor(frames)

input_conv(frames_tensor)

给出错误

RuntimeError: 4 维权重 [32, 10, 3, 3] 的预期 4 维输入,但得到了大小为 [64, 10, 3, 32, 32] 的 5 维输入

标签: pythonpytorchtensorconv-neural-network

解决方案


鉴于您的评论,听起来您的数据根本不适合2D卷积神经网络,而3D的 ( Conv3d) 会更合适。正如您从它的文档中看到的那样,它的输入形状是您所期望的。


推荐阅读