Conv2d 卷积层参数数量、feature map大小

类似的内容非常多,只是想写一写当作复习,如果错误请指出,感谢大家的指点。

torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', device=None, dtype=None)

卷积层参数个数

假设in_channels = 5, out_channels = 6, 卷积核大小 3*3,其他参数默认

那么参数总数量为 (3*3*5+1)*6.

因为输入有5个通道,所以卷积核也会对应有5个通道再加上每个卷积核共享一个权重,这里提供了式子中 3*3*5+1的部分。

输出有6个通道,所以一共需要6个卷积核,最终参数数量就是(3*3*5+1)*6。

feature map大小

feature map的大小 取决于以下几点

输入图像尺寸大小

卷积核大小

padding 数量

stride 的步长

dilation 的间隔

这些参数的释义如果有疑惑可以参考下面的博客。

torch.conv2d stride,dilation,groups_wuhao1205的博客-CSDN博客torch.Conv2dhttps://blog.csdn.net/wuhao1205/article/details/124677878?spm=1001.2014.3001.5502先上公式(这个公式没有考虑dilation,下文中会提到)卷积神经网络CNN(卷积池化、感受野、共享权重和偏置、特征图) - 知乎

H和W的计算是对称的,所以这里只讨论W就足够了。

下图是一个5*5的矩阵和它在3*3权重全为1的卷积核下卷积的结果。默认情况下,P=0,S=1,卷积核从左往右挪动,到红框这个位置就得停下来。此时很容易可以看出卷积核只能移动 W-FW+1次,所以宽度当然就是 W-FW+1

padding相当于延长了H和W,因为padding在上,下,左,右四个方向都会有添加,所以padding带来的影响是双倍的。所以考虑padding之后宽度是 W+2P-FW+1。

接下来考虑S,从上面的讨论中,卷积核最多只能移动到原图像的第 W+2P-FW+1列。当步长为1时,移动的次数为  W+2P-FW 次(从1到x一共x-1个间隔),而feature map的宽度为移动次数+1。步长为S时 移动的次数就要相应的除以S,最终再加上1就是生成的feature map的宽度。

dilation 增大了卷积核在原图像上的采样间隔,实际上也就是增大了卷积核的大小。

上图中方格表示dilation=1(即没有间隔)时的卷积核在原图像对应的采样点,小圆圈表示dilation为x时插入的x-1个间隔。当卷积核宽度为FW时,插入的间隔数量一共为  (FH-1)*(dilation-1)。这也就相当于将FH增大了这么多。

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值