pytorch 卷积层滤波器贴图组合

wlp8pajw  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(188)

如果我在pytorch中有一个非常简单的2d卷积层,那么我们说:

nn.Conv2d(2, 3, 1, groups=1, padding=0, bias=False)

字符串
正如我从pytorch文档中所理解的,如果一个集合groups=1,所有输入都卷积到所有输出。这意味着对于每个输出,有2个特征Map需要以某种方式组合。我预计这将以某种方式增加两个特征Map,但情况似乎并非如此。有人知道如何在技术上将两个特征Map合并为一个吗?

cwtwac6a

cwtwac6a1#

使用groups=1,您将获得默认行为,其中每个过滤器(您有3个)考虑所有输入通道(2,在你的情况下)。相反,对于groups=2,一半输入通道与一半输出通道卷积:在你的例子中,3不能被2整除,所以你 * 不能 * 有groups=2。这意味着可学习参数减少了2倍,因为你将一半的输入与一半的过滤器结合在一起。
基本上,groups > 1允许实现一个 * 分组卷积 *,这就像在一个均匀划分的输入上使用多个 * 较小的 * 卷积。
无论如何,对于groups的任何值,你总是得到 * 一个 * 大小为N x 3 x H x W的输出Tensor,因为你有3个输出过滤器。
有谁知道这两个功能Map是如何在技术上合并成一个的?
各个组的输出被连接起来以获得最终的特征图。因为就好像多个nn.Conv2d(2, 3 // groups, 1)被应用到2 // groups输入通道。

jum4pzuy

jum4pzuy2#

我现在找到了解决方案。特征图是在密集层中完成的。理论可以在卷积演示中找到详细信息
this colab notebook范围内证明

相关问题