• 深度之眼PyTorch训练营第二期 ---7、nn网络层--卷积层


    一、1d/2d/3d卷积

    • 卷积运算:卷积核在输入信号(图像)上滑动,相应位置上进行乘加
    • 卷积核:又称为滤波器,过滤器,可认为是某种模式,某种特征。

    卷积过程类似于用一个模板去图像上寻找与他相似的区域,与卷积核模式越相似,激活值越高,从而实现特征提取

    AlexNet卷积核可视化,发现卷积核学习到的是边缘条纹色彩这一些细节模式

    • 卷积维度:一般情况下,卷积核在几个维度上滑动,就是几维卷积

    二、卷积-nn.Conv2d

    • nn.Conv2d  功能:对多个二维信号进行二维卷积
    • 主要参数:
      •   in_channels:输入通道数
      •   out_channels:输出通道数,等价于卷积核个数
      •   kernel_size:卷积核尺寸
      •   stride:步长
      •   padding:填充个数
      •   dilation:空调卷积大小
      •   groups:分组卷积设置
      •   bias:偏置
    • 尺寸计算:
      •   简化版:
      •   完整版:

    三、转置卷积-nn.ConvTranspose

    转置卷积又称反卷积和部分跨越卷积,用于对图像进行上采样。

    • 为什么成为转置卷积?
      •   正常卷积:假设图像尺寸为4*4,卷积核为3*3,padding=0,stride=1

              图像:I16*1,卷积核:K16*4,输出:O16*1 = K16*4 * I4*1

      •   转置卷积:假设图像尺寸为2*2,卷积核为3*3,padding=0,stride=1 

                                        图像:I4*1  卷积核:K16*4 输出:O16*1 = K16*4 * I4*1

    • 功能:转置卷积实现上采样
    • 主要参数:
      •        in_channels:输入通道数
      •   out_channels:输出通道数,等价于卷积核个数
      •   kernel_size:卷积核尺寸
      •   stride:步长
      •   padding:填充个数
      •     dilation:空调卷积大小
      •     groups:分组卷积设置
      •   bias:偏置
    • 尺寸计算:
      •   简化版:
      •        完整版:

    棋盘效应:推荐文章《Deconvolution and Checkerboard Artifacts》

    四、池化层-----Pooling Layer

    • 池化运算:对信号进行“收集”并“总结”,类似水池收集水资源,因而得名池化层
    • 收集”:多变少       “总结”:最大值/平均值
    • nn.MaxPool2d
    • 功能:对二维信号(图像)进行最大值池化
    • 主要参数:
      •   kernel_size:池化核尺寸
      •        stride:步长
      •        padding:填充个数
      •        dilation:池化核间隔大小
      •        ceil_mode:尺寸向上取整
      •        return_indices:记录池化像素索引
    • nn.AvgPool2d
    • 功能:对二维信号(图像)进行平均池化
    • 主要参数:
      •        kernel_size:池化核尺寸
      •        stride:步长
      •        padding:填充个数
      •        ceil_mode:尺寸向上取整
      •        count_include_pad:填充值用于计算
      •        divisor_override:除法因子
    • nn.MaxUnpool2d
    • 功能:对二维信号(图像)进行最大池化上采样
    • 主要参数:
      •   kernel_size:池化核尺寸
      •      stride:步长
      •        padding:填充个数

    五、线性层-----Linear Layer

    线性层又称全连接层,其每个神经元与上一层所有神经元相连实现对前一层的线性组合线性变换

    input = [1, 2, 3]          shape = (1,3)

       1 2 3 4

    w_0 = 1 2 3 4            shape = (3,4)

               1 2 3 4

    Hidden = input * w_0   shape = (1,4)

                = [6, 12, 18, 24]

    • nn.Linear
    • 功能:对一维信号(向量)进行线性组合
    • 主要参数:
      •   in_features:输入结点数
      •        out_features:输出结点数
      •        bias:是否需要偏置
    • 计算公式:

    六、激活函数层-----Activation Layer

    激活函数对特征进行非线性变换,赋予多层神经网络具有深度的意义

    H1 = X * W1

    H2 = H1 * W2

    Output = H2 * W3

                = H1 * W2 * W3

                = X * (W1 * W2 * W3)

                = X * W

    • nn.Sigmoid
    • 计算公式:
    • 梯度公式:
    • 特性:
      •   输出值在(0,1),符合概率
      •        导数范围是[0, 0.25],易导致梯度消失
      •        输出非零均值,破坏数据分布
    • nn.tanh
    • 计算公式:
    • 梯度公式:
    • 特性:
      •   输出值在(-1,1),数据符合0均值
      •        导数范围是(0,1),易导致梯度消失
    • nn.ReLU
    • 计算公式:
    • 梯度公式:
    • 特性:
      •   输出值均为正数,负半轴导致死神经元
      •        导数是1,缓解梯度消失,但易引发梯度爆炸
    • nn.LeakyReLU
      •   negative_slope:负半轴斜率
    • nn.PReLU
      •   init:可学习斜率
    • nn.RReLU
      •   lower:均匀分布下限
      •        upper:均匀分布上限
  • 相关阅读:
    用js内置对象XMLHttpRequest 来用ajax
    HTTP 状态代码及其定义
    Delphi 字符类转换集《转》
    delphi 只允许运行一个实例的三种方法《转》
    时间加减函数(年、月、日)《转》
    删除数据库的表中某字段的值《转》
    Delphi 对话框《转》
    Delphi 给frxReport赋值《lcemeaning》
    点击链接弹出框提示《转》
    CentOS7上elasticsearch5.5启动报错
  • 原文地址:https://www.cnblogs.com/cola-1998/p/11810041.html
Copyright © 2020-2023  润新知