Conv2d参数详解及复写
文档注释
def __init__(self, in_channels: int, out_channels: int, kernel_size: tuple[int, ...], stride: tuple[int, ...] = 1, padding: str = 0, dilation: tuple[int, ...] = 1, groups: int = 1, bias: bool = True, padding_mode: str = 'zeros', device: Any = None, dtype: Any = None) -> None Base class for all neural network modules. Your models should also subclass this class. Modules can also contain other Modules, allowing to nest them in a tree structure. You can assign the submodules as regular attributes: import torch.nn as nn import torch.nn.functional as F
Conv2d
要求输入(N , C , h , w )= ( 样本数 , 通道数 ,高度 ,宽度 ),Conv1d...类比
channel 通道控制组
in_channels
:输入通道数,对输入的限制
out_channels
: 输出通道数,要求卷积层有对应数量的卷积核,影响模型参数数量
h,w 控制组
kernel_size
:卷积核维度,int => (int,int) 或 tuple
stride
:卷积核移动步长,int/tuple 同上
padding
:给输入h,w边界填充值,一般用于控制输出维度是否变化、上下文信息是否合并 padding_mode
:填充的值
dilation
:卷积区域扩张量,1:输入tensor卷积区域于卷积核一样大 2:卷积区域节点间距离1 ,依次类推 图像示例
公式推导:
源头 :Hout = (H - [(d-1)*(k-1) + k]) // Strid + 1
,解释如下:
-
//
整除左侧为输入H方向 除去初始占位长度 剩余可移动长度-
H
为输入总长度 ,(d-1)*(k-1) + k
:扩展空格区域+实际卷积区域=初始所占长度
-
-
//
整除右侧整除步长,即剩余的长度可容许 几次步长 移动,必须是整除 -
+1
初始占位区域经过映射后也会产生一个值到 输出tensor中,所以 +1