Fork me on GitHub

Coding Poineer

Coding Poineer

Coding Poineer

Coding Poineer

Coding Poineer

Coding Poineer

Coding Poineer

Coding Poineer

Coding Poineer

Coding Poineer

Coding Poineer

Conv2d参数详解及复写

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

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

  • 化简公式即可得到 文档中目标公式

posted @ 2022-05-12 02:11  365/24/60  阅读(124)  评论(0编辑  收藏  举报