2022-07-22 深度学习Python笔记

torch.nn.functional.avg_pool2d(...)与adaptive_avg_pool2d(...):

avg_pool2d(input, kernel_size, stride, padding):平均池化公式:

input:输入张量

kernel_size:卷积核大小,如kernel_size=3,表示为卷积核大小为3X3

stride:滑动窗口步长

padding:外边加几圈0, 如padding=1, 表示外边加1圈0

例如:


F.avg_pool2d

input x的shape为torch.Size([1, 3, 2])

卷积核大小设置为2X2

步长为1

外边加一圈0

运行结果:


运行结果


草图

知道输入数据shape, 核大小,步长,padding,如何得到输出数据的shape:

公式:


卷积结果计算公式

上述例子中假设channel为1, 宽为3, 高为2

则:W=(3-2+2*1)/1 + 1=4

       H=(1-2 + 2*1)/1 + 1 = 3

所以输出数据 shape为[1, 4, 3]

adaptive_avg_pool2d(input, output_size): 自适应平均池化公式:

input:输入张量

output_size:输出大小,如(1, 1), 表述输出结果最后2维必须为(1,1),其他保持不变

例如:


F.adaptive_avg_pool2d

运行结果:


运行结果

自适应是如何知道卷积核的大小?其实是从上面公式推导出来的,知道输入、输出大小,假设padding=0, 就能够求出kernel_size。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容