卷积步长strides参数的具体解释

conv1 = tf.nn.conv2d(input_tensor,conv1_weights,strides=[1,1,1,1],padding='SAME')

这是一个常见的卷积操作,其中strides=【1,1,1,1】表示滑动步长为1,padding=‘SAME’表示填0操作

当我们要设置步长为2时,strides=【1,2,2,1】,很多同学可能不理解了,这四个参数分别代表了什么,查了官方函数说明一样不明不白,今天我来解释一下。

strides在官方定义中是一个一维具有四个元素的张量,其规定前后必须为1,这点大家就别纠结了,所以我们可以改的是中间两个数,中间两个数分别代表了水平滑动和垂直滑动步长值,于是就很好理解了。

在卷积核移动逐渐扫描整体图时候,因为步长的设置问题,可能导致剩下未扫描的空间不足以提供给卷积核的,大小扫描 比如有图大小为5*5,卷积核为2*2,步长为2,卷积核扫描了两次后,剩下一个元素,不够卷积核扫描了,这个时候就在后面补零,补完后满足卷积核的扫描,这种方式就是same。如果说把刚才不足以扫描的元素位置抛弃掉,就是valid方式。

### 步长卷积的概念及其在神经网络中的应用 #### 1. 步长卷积的基本概念 步长(Stride)是指卷积核在输入图像上滑动时每次移动的像素数。当步长大于1时,卷积核不会覆盖每一个像素位置,从而减少了输出特征图的空间尺寸[^2]。通过调整步长参数,可以在一定程度上控制模型的感受野以及计算复杂度。 对于标准卷积操作,默认情况下步长通常设为1,这意味着卷积窗口逐像素地扫描整个输入矩阵。然而,在实际应用场景中,增大步长能够有效降低维度并减少冗余信息,这尤其适用于高分辨率图片处理任务或者需要快速降采样的情况。 #### 2. 步长卷积的作用 - **空间缩减**: 增大stride值可以直接缩小输出feature map大小,有助于缓解过拟合现象同时加快运算速度。 - **稀疏连接**: 较大的strides使得相邻感受域之间不再完全重叠,形成一种更稀疏但更具代表性的表达形式[^1]。 #### 3. 实现方式 以下是基于PyTorch框架的一个简单例子来展示如何定义具有不同step size 的convolution layer: ```python import torch.nn as nn class StridedConvNet(nn.Module): def __init__(self): super(StridedConvNet, self).__init__() # 定义一个带有步长为2的二维卷积层 self.conv_layer = nn.Conv2d(in_channels=3, out_channels=64, kernel_size=(3,3), stride=2) def forward(self, x): return self.conv_layer(x) ``` 上述代码片段创建了一个接受RGB三通道彩色图像作为输入,并运用kernel size为(3x3),out channel数量设定成64的基础卷积单元;值得注意的是这里设置了`stride=2`, 表明该卷积将在水平方向和垂直方向都跳跃两个单位进行下一次过滤器放置. #### 4. 参数影响分析 改变stride会对最终结果产生如下几种主要变化: - 输出shape的变化遵循公式:`Output Shape = (Input Size - Filter Size + 2*Padding)/Strides + 1`. - 更高的stride数值意味着更大的downsampling效果, 这可能丢失部分细节但是也降低了后续全链接阶段所需的资源消耗. 综上所述,适当调节stride可以帮助我们更好地平衡精度与效率之间的关系[^3]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值