ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

卷积 - 2. 常规2D卷积 代码和解释

2021-11-01 22:58:36  阅读:202  来源: 互联网

标签:padding tuple 卷积 常规 2D int 默认 optional


1.  Pytorch代码

对于卷积里,pytorch代码非常简单,看 Conv2d PyTorch 1.10.0 非常足够!但我也想对其中的部分进行更多一点的解释

  • in_channels (int) – 输入图片 / 特征的通道数 

  • out_channels (int) – 输出特征的通道数

  • kernel_size (int or tuple) – 卷积核的大小 (比如 int:3,代表 size 3 × 3)

  • stride (int or tupleoptional) – 上一篇文章中,卷积核的每一步的移动步长 (默认是1)

  • bias (booloptional) – 可学习偏执,如果是Ture,则在最后的输出特征每个通道的每个元素加上这个偏执项。( 默认:True)

  • dilation (int or tupleoptional) – 卷积核内部像素之间的距离. (默认: 1)

  • groups (intoptional) – 分组,(默认: 1) 后面的文章-分组卷积时单独去讲 


上述的参数都是易懂的,且很好理解的,我重点介绍和解释下面的几个参数: 

padding  (inttuple or stroptional) : 在讲这个参数之前,首先要明确和解决的几个问题是

1. 为什么会存在padding?答:如下图当stride是2的时候,此时卷积核对应的像素值已经为null了,所以要在null处补值。

2. padding是在卷积前补还是之后补?补充的值是什么?

padding是在卷积前面补充,默认是0。例如:当padding = 1, 则在卷积前的特征上下左右均补1行0,当padding = (1, 2) 则在上下补1行0,左右补2行0。可以通过torch.nn.Functional.pad来补非0的值。

2. 输出特征计算

输出的特征计算,是通过上面的几个参数得到的,具体的计算公式可以看官网,下面贴出来:

 我们通过代码来展示一下:假设我们input 为(6, 3, 100, 200) , in_channel = 3, out_channels = 16, kernel_size = 3, padding = 1, stride = (2, 1) 那我们最后通过程序得到的输出:

 

 经验算,是符合上面公式的!好的,今天讲解就到这里,有问题就留言!下课!

标签:padding,tuple,卷积,常规,2D,int,默认,optional
来源: https://blog.csdn.net/Aaron_neil/article/details/121089137

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有