6.3 填充和步幅 & 卷积层的输出形状公式
  XZVAVmlOqzo6 2023年11月02日 35 0

一.填充

1.作用:

为了防止丢失边缘像素。如240x240的像素图像,经过10层5x5卷积,变成了200x200像素。可以根据输出形状计算公式 (w-k+1) x (h-k+1)计算得出。

2.方法:

最常用的方法是填充0。如下:

6.3 填充和步幅 & 卷积层的输出形状公式_卷积核

3.公式:计算填充原图像后的输出形状

假设填充p行(上面填充p/2行,下面填充p/2行),p列。输出大小为:

w = (原图片h行 + 填充p行 -k + 1)
h = (原图片w列 + 填充p列 -k + 1)

相当于输出的高度和宽度直接增加p行和p列

4.应用:使输入和输出具有相同的形状

设置

p_w = k_w - 1
 p_h = k_h - 1

5.补充:为什么卷积核需要设置成奇数?

如果需要输入输出具有相同形状,那么一般设置卷积核奇数,这样填充的w和h将会是偶数,就可以让顶部和底部填充相同的行,左侧右侧填充相同的列

6.代码

import torch
from torch import nn

def comp_conv2d(conv2d,X):
    # 输入X的shape为(8,8),输出为(1,1,8,8),1,1表示批量大小和通道数
    X = X.reshape((1,1) + X.shape)
    Y = conv2d(X)
    return Y
    
#随机生成一个8*8的X
X = torch.rand(size=(8,8))
# 1,1表示通道数和维度
conv2d = nn.Conv2d(1,1,kernel_size=3,padding=1)
comp_conv2d(conv2d,X).shape

输出结果:torch.Size([1, 1, 8, 8])

二.步幅

1.是什么

卷积窗口每次滑动元素的数量,也叫步长

2.例子

垂直步幅为3,水平步幅为2的卷积运算:

6.3 填充和步幅 & 卷积层的输出形状公式_卷积_02

输出形状计算

w = (原图片行数 + 2 * 填充行数 - k ) / 水平步幅 + 1 h = (原图片列数 +2 * 填充列数 - k ) / 垂直步幅 + 1

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  3XDZIv8qh70z   2023年12月23日   26   0   0 2d2d
XZVAVmlOqzo6