【发布时间】:2020-09-02 17:09:36
【问题描述】:
假设:
x = torch.arange(16, dtype=torch.float).reshape(1, 1, 4, 4)
一个二维卷积层是:
layer = torch.nn.Conv2d(in_channels=1, out_channels=1, kernel_size=2, stride=2)
layer.weight.data[:] = 1.
layer.bias.data[:] = 0.
通常,将 x 传递给 layer 会得到:
>>layer(x)
tensor([[[[10., 18.],
[42., 50.]]]], grad_fn=<MkldnnConvolutionBackward>)
考虑到有 4 个掩码过滤器,如何在每个步骤中对内核进行掩码? 例如下图表示4个过滤器(白色:True,黑色:False)
输出应该是:
tensor([[[[5., 15.],
[30., 40.]]]], grad_fn=<MkldnnConvolutionBackward>)
P.S:所有掩码都是通过二维输入数组中缺失的像素获得的。所以上面的4个mask其实是一个和输入形状一样的矩阵。
【问题讨论】: