卷积后图片尺寸

1.卷积简介

卷积运算的目的是提取输入的不同特征,某些卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网路能从低级特征中迭代提取更复杂的特征。实际使用中往往与BN(批量归一化)、激活函数搭配使用。
卷积和池化区别:卷积往往需要学习参数w和b,池化不需要学习。
卷积层后往往加激活函数进行非线性变换,池化不需要。

2. 卷积输出尺寸

卷积后图片输出后尺寸:
N = W + 2 P − F s ( 下取整 ) + 1 N =\frac{W + 2P - F}{s} (下取整)+ 1 N=sW+2PF(下取整)

### 卷积神经网络图片尺寸变化的计算公式 在卷积神经网络CNN)中,卷积操作会对输入图像的尺寸产生影响。这种影响可以通过特定的公式来描述,具体取决于几个关键参数:输入图像尺寸 \(I\)、卷积尺寸 \(K\)、步幅 \(S\) 和填充数 \(P\)。 #### 计算公式 输出特征图的尺寸可以由以下通用公式表示: \[ O = \frac{I + 2P - K}{S} + 1 \] 其中: - \(O\) 是输出特征图的尺寸, - \(I\) 是输入特征图的尺寸, - \(K\) 是卷积核的尺寸, - \(S\) 是步幅(stride),即每次滑动窗口移动的距离, - \(P\) 是填充(padding)的数量[^3]。 如果分别考虑宽度和高度方向上的步幅,则输出特征图的高度和宽度可以用更详细的表达式写成: \[ H_{out} = \left\lfloor \frac{H_{in} + 2P_h - K_h}{S_h} \right\rfloor + 1 \] \[ W_{out} = \left\lfloor \frac{W_{in} + 2P_w - K_w}{S_w} \right\rfloor + 1 \] 这里 \(H_{in}\) 和 \(W_{in}\) 表示输入特征图的高度和宽度;\(P_h\) 和 \(P_w\) 分别是垂直和水平方向的填充数量;\(K_h\) 和 \(K_w\) 则分别是卷积核的高度和宽度;而 \(S_h\) 和 \(S_w\) 是对应方向的步幅[^2]。 #### 参数对图片尺寸的影响分析 1. **步幅 (Stride)** 步幅决定了卷积核在输入上滑动的速度。较大的步幅会减少输出特征图的尺寸,因为每次跳跃覆盖更多的像素区域。例如,在固定其他条件的情况下,增大 \(S\) 的值会使分母变大从而减小最终的结果 \(O\)。 2. **填充 (Padding)** 填充用于扩展输入边界以保持输出大小接近原始输入或者控制边缘效应。增加填充 (\(P>0\)) 可以防止因卷积而导致的空间维度收缩,并可能维持甚至扩大输出尺寸。 3. **卷积核大小 (Kernel Size)** 较大的卷积核通常捕获更大的感受野但也会显著降低分辨率。这是因为较大 \(K\) 导致分子部分变得更小,进而压缩了输出空间。 4. **输入尺寸 (Input Size)** 输入数据本身的规模直接影响到经过一层或多层变换后的结果形状。即使所有超参都相同,不同初始尺度仍会产生差异化的映射效果。 综上所述,通过合理设置这些参数能够灵活调控每一阶段处理后得到的新表征形式及其几何特性[^1]。 ```python def calculate_output_size(input_size, kernel_size, stride=1, padding=0): """ Calculate the output size of a convolutional layer. Parameters: input_size (int): The spatial dimension of the input feature map. kernel_size (int): The size of the convolutional filter/kernel. stride (int): Stride value used during convolution operation. padding (int): Number of zero-padded pixels around each side. Returns: int: Spatial dimensions after applying convolutions with given parameters. """ return ((input_size + 2 * padding - kernel_size) // stride) + 1 # Example usage demonstrating how changing strides affects outcome sizes example_input_dim = 32 kernel_dimensions = 5 step_length = [1, 2] # Different possible values for 's' extra_padding = 0 # No extra border added here ('p') for st in step_length: result = calculate_output_size(example_input_dim, kernel_dimensions, st, extra_padding) print(f"For stride {st}, resulting image width/height is {result}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值