创建一个具有1xD内核的CNN,其中D是在MxD矩阵上垂直滑动的列数



创建一个具有1xD内核的CNN,其中D是在MxD矩阵上垂直滑动的列数?

我试图在Pytorch中创建一个CNN,它有一个内核,可以在2D图像上垂直滑动1xD内核,因此输出应该是Mx1。在CNN中,对图像的每一行进行卷积,然后为每一行生成一个值。还具有从1xD变为NxD的能力,其中N是一些预定义的行数也是不错的。输入仅仅是一个矩阵,而不是表示图像的3D矩阵。

nn.Conv2d中的核不一定是正方形的,它们也可以是矩形的:

class MyModel(nn.Module):
def __init__(self, in_channels, out_channels, N, D):
super(MyModel, self).__init__()
self.conv = nn.Conv2d(in_channels, out_channels, kernel_size=(N, D), padding=0, stride=1)
def forward(self, x):
return self.conv(x)

请注意,您的输入x必须是4维的:B-C-H-W。其中通道的数量C必须与构造MyModel时定义的in_channels相匹配
如果您有一个只有一个通道的单个图像,那么输入应该有两个主要的单个维度:即x的形状应该是1-1-M-D
有关为什么x应该是4D的更多信息,请参阅此答案。

相关内容

最新更新