Pytorch Conv2d的使用

本文详细介绍了PyTorch中的Conv2d函数,包括其语法、参数含义及输入输出形状的关系,帮助读者深入理解二维卷积操作。

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

con2dpytorch中最经常使用的卷积函数之一,那么有必要对其语法和使用时需要注意的一些细节有所了解。
以下内容均参考自 pytroch conv2d官网

Conv2d

函数原型
torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros')

函数的作用是对输入的多通道输入信号做二维卷积,假设输入的信息大小为 ( N , C i n , H , W ) ({N}, C_in, H, W) (N,Cin,H,W),容易知道在图像处理中N代表每一批输入的图片数量,C_in表示的是每张图像的通道数,H,W则代表图片的高和宽,这是表示多张图片最常用的表示形式。
卷积运算数学表达形式如下:
out ⁡ ( N i , C o u t j ) = bias ⁡ ( C o u t j ) + ∑ k = 0 C i n − 1  weight  ( C o u t j , k ) ⋆ input ⁡ ( N i , k ) \operatorname{out}\left(N_{i}, C_{\mathrm{out}_{j}}\right)=\operatorname{bias}\left(C_{\mathrm{out}_{j}}\right)+\sum_{k=0}^{C_{\mathrm{in}}-1} \text { weight }\left(C_{\mathrm{out}_{j}}, k\right) \star \operatorname{input}\left(N_{i}, k\right) out(Ni,Coutj)=bias(Coutj)+k=0Cin1 weight (Coutj,k)input(Ni,k)

参数介绍

in_channels: 进行卷积运算的输入的通道数

out_channels:卷积运算后输出的通道数

kernel_size:卷积核的大小,常见的有1 * 1, 3 * 3

stride: 卷积运算步长

padding:在输入的边缘进行的一定数量的填充,一般填充0,目的是为了更加充分的利用输入的边界部分信息。

dilation:在卷积核每个参数之间的空格,官网上给出了一个易于理解的动态演示

group:对输入的通道进行分组卷积,得到多组结果,之后进行拼接,每组得到的通道数为 ⌊  out_channels  in_channels ⌋ \left\lfloor\frac{\text { out\_channels} } {\text { in\_channels}}\right\rfloor  in_channels out_channels,,默认为1

bias:偏置,添加在卷积运算结果后面的可学习参数,形状为(out_channels, ),默认为True

padding_mode:默认为'zeros',注意是字符串。

输入与输出形状和卷积运算参数之间的关系

input shape:(N, C_in, H_in, W_in)
output shape: (N, C_out, H_out, W_out)

则有:

H o u t = ⌊ H i n + 2 × padding [ 0 ] − dilation[0] × ( kernel_size [ 0 ] − 1 ) − 1 stride[0] + 1 ⌋ H_out = \lfloor{\frac{H_{in} + 2 \times \text{padding}[0] - \text{dilation[0]} \times (\text{kernel\_size}[0] - 1) - 1} {\text{stride[0]}} + 1}\rfloor Hout=stride[0]Hin+2×padding[0]dilation[0]×(kernel_size[0]1)1+1

W o u t = ⌊ H i n + 2 × padding [ 1 ] − dilation[1] × ( kernel_size [ 1 ] − 1 ) − 1 stride[1] + 1 ⌋ W_out = \lfloor{\frac{H_{in} + 2 \times \text{padding}[1] - \text{dilation[1]} \times (\text{kernel\_size}[1] - 1) - 1} {\text{stride[1]}} + 1}\rfloor Wout=stride[1]Hin+2×padding[1]dilation[1]×(kernel_size[1]1)1+1

注意这里的 ⌊ . . . ⌋ \lfloor...\rfloor ...是向下取整运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值