深度学习之卷积神经网络中same padding 和 valid padding

本文探讨了卷积操作在图像处理中导致边界信息丢失的问题,并介绍了如何通过Padding技术来解决这一难题。详细讲解了valid和same两种Padding方式,以及它们在实际应用中的具体操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

卷积操作知识点

  1. 卷积操作使得图像边界信息丢失,即有些图像角落和边界的信息发挥作用较少,因此需要padding。

  2. 卷积核大小通常为奇数。 一方面是为了方便 same padding时对称填充,左右两边对称补零;另一方面,奇数过滤器有中心像素,便于确定过滤器的位置。

  3. 以单通道、一个卷积核为例进行卷积。当有5x5x1的图像,卷积核为3x3x1,步长为2时:
    在这里插入图片描述
    a. 当使用 valid padding 时,采用丢弃的方式
    b. 当使用 same padding的方式,采用补全的方式,补0的方式是左奇右偶或者对称补齐

### 卷积神经网络中的ValidSame Padding #### Valid Padding 在有效填充(`VALID`)的情况下,输入特征图不会添加任何填充。这意味着滤波器仅应用于图像的有效部分,即完全覆盖的部分。因此,输出特征图通常会比输入特征图小。这种设置适用于希望减少空间维度的情况。 对于给定的输入尺寸 \( W \times W \),滤波器大小 \( F \times F \),步长 \( S \),以及无填充时: \[ N = \left\lfloor{\frac{W - F}{S} + 1}\right\rfloor \] 其中 \( N \) 是输出的高度或宽度[^4]。 例如,在 `strides=2*2` 的情况下应用 `VALID` 填充,如果输入形状为 `[N, 3, 3, C]` 并且使用了一个 \( 2\times2 \) 大小的过滤器,则计算得到的输出将是 `[N, 1, 1, C']` 形状,这里 \( C' \) 表示通道数量可能因卷积操作而变化[^2]。 ```python import tensorflow as tf input_tensor_valid = tf.constant( [[[[1], [2]], [[3], [4]]]], dtype=tf.float32) output_valid = tf.nn.conv2d(input=input_tensor_valid, filters=tf.ones([2, 2, 1, 1]), strides=[1, 2, 2, 1], padding='VALID') print(output_valid.shape) ``` #### Same Padding 相比之下,相同填充(`SAME`)会在必要时向输入边缘添加额外的零值像素,从而确保经过卷积层处理后的输出具有与原始输入相同的尺寸。这对于保持空间分辨率特别有用。 同样地,考虑上述参数配置下的情况,但在 `SAME` 模式下执行卷积操作将会使输出保留接近于原输入的尺寸。 ```python input_tensor_same = tf.constant( [[[[1], [2], [3]], [[4], [5], [6]], [[7], [8], [9]]]], dtype=tf.float32) output_same = tf.nn.conv2d(input=input_tensor_same, filters=tf.ones([2, 2, 1, 1]), strides=[1, 2, 2, 1], padding='SAME') print(output_same.shape) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值