• 卷积神经网络基本概念


    在这里插入图片描述

    • 数字1处:一个圈表示一个神经元
    • 数字2处:一个圈表示一个神经元,圈的大小表示感受野的大小,即眼睛看到的范围

    1. 感受野

    • 感受野:表示扫描图片的范围大小
      • 感受野越,图片扫描的范围越,眼睛看到的范围越
      • 感受野越,图片扫描的范围越,眼睛看到的范围越
    • 感受野的大小=卷积核的大小

    2. 卷积核

    • 卷积核又称过滤器(filter)
    • 感受野的大小=卷积核的大小
    • 卷积核是需要求的参数w
    • 卷积核的大小通常为3*35*57*7
    • 卷积核个数根据自己的需求设置
    • 卷积核个数=通道个数

    3. 特征图【feature map】

    • 特征图的值相当于从不同的角度观看图片

    • 输出特征图的大小=卷积核的大小
      在这里插入图片描述

    • image:5*5,相当于是5*5大小的图片

    • filter:3*3,表示卷积核的大小为3*3,即感受野3*3

    • 特征图=卷积核与感受野点积+bias

      • 例如计算4的过程
        x = x 1 ∗ y 1 + x 2 ∗ y 2 + x 3 ∗ y 3 + x 4 ∗ y 4 + x 5 ∗ y 5 + x 6 ∗ y 6 + x 7 ∗ y 7 + x 8 ∗ y 8 + x 9 ∗ y 9 + b i a s = 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 1 + 0 = 4
        x=x1y1+x2y2+x3y3+x4y4+x5y5+x6y6+x7y7+x8y8+x9y9+bias=1+0+1+0+1+0+0+0+1+0=4" role="presentation">x=x1y1+x2y2+x3y3+x4y4+x5y5+x6y6+x7y7+x8y8+x9y9+bias=1+0+1+0+1+0+0+0+1+0=4
        x=x1y1+x2y2+x3y3+x4y4+x5y5+x6y6+x7y7+x8y8+x9y9+bias=1+0+1+0+1+0+0+0+1+0=4
    • 一次卷积后,feature map大小为

    参数含义
    S步长
    F卷积核大小
    P 0填充的宽度
    W上一次图片宽度
    H上一次图片高度

    W 2 = W 1 − F − 2 P S + 1 H 2 = H 1 − F − 2 P S + 1

    W2=W1F2PS+1H2=H1F2PS+1" role="presentation">W2=W1F2PS+1H2=H1F2PS+1
    W2H2=SW1F2P+1=SH1F2P+1

    4. 通道【channel】

    • 1个图片的通道有3个,分别为rgb,如果图片还有透明度属性,通道为4,为rgba
    • 一个通道有一个2维的卷积核
      在这里插入图片描述
    • 如图,1个图片有三个通道,分别为x[:,:,0],x[:,:,1],x[:,:,2]
    • 一个通道有一个2维卷积核,上图的卷积核大小为3*3*33*3是自己设置的大小,再乘3表示有三个通道
    • 卷积核个数自己设置,上图设置了2个卷积核
    • 上图中6的计算步骤
      x = x w + b i a s = x [ : , : , 0 ] ∗ w + x [ : , : , 1 ] ∗ w + x [ : , : , 2 ] ∗ w + b i a s = ( 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 ) + ( 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 ) + ( 0 + 0 + 0 + 0 + 2 + 0 + 0 − 1 + 0 ) + 1 = 6
      x=xw+bias=x[:,:,0]w+x[:,:,1]w+x[:,:,2]w+bias=(0+0+0+0+0+0+0+2+2)+(0+0+0+0+0+0+0+0+0)+(0+0+0+0+2+0+01+0)+1=6" role="presentation">x=xw+bias=x[:,:,0]w+x[:,:,1]w+x[:,:,2]w+bias=(0+0+0+0+0+0+0+2+2)+(0+0+0+0+0+0+0+0+0)+(0+0+0+0+2+0+01+0)+1=6
      x=xw+bias=x[:,:,0]w+x[:,:,1]w+x[:,:,2]w+bias=(0+0+0+0+0+0+0+2+2)+(0+0+0+0+0+0+0+0+0)+(0+0+0+0+2+0+01+0)+1=6
    • 卷积核会对各个通道结果做累加,不管卷积之前有几个通道,都会变成一个通道
      • 即输出通道个数需要自己设置,有几个卷积核就会有几个通道,就是设置卷积核个数
    • 三维图
      在这里插入图片描述

    5. 填充【padding】

    • zero padding【0填充】
    • VALID
      • 不填充,有可能会忽略图片右侧或底下,这个需要看stride的设置
    • SAME
      • 填充,这种情况下,输出神经元个数等于输入神经元个数除以步长
        在这里插入图片描述

    6. 步长【stride】

    • 扫描图片的步长,当stride2,表示每次扫描一次平移2个步长
      在这里插入图片描述

    7. 池化【pooling】

    • 目的就是降采样subsample,减少计算负荷,内存使用,参数数量(也可防止过拟合)

    • 减少输入图片大小也使得神经网络可以经受一点图片平移,不受位置的影响【提高泛化能力

    • 池化神经元没有权重值【不需要计算参数】,它只是聚合输入根据取最大或者是求均值

    • 通常使用最大池化,因为我们就是要保留最大特征,如果用平均池化会把最大特征平均掉,特征会变得不明显,不是我们想要的结果

    • 池化操作是对每个通道做池化,通道之前不会累加,通道之间无关【池化后,道数不变

    • 池化类型

      • 最大池化,取池化核的最大值, 如图,最大值为5
      • 平均池化,取池化核的平均值,如图,平均值就为(1+2+0+1)/4=1
        在这里插入图片描述
    • 池化后,feature map大小为

    参数含义
    S 步长
    F 卷积核大小
    W上一次图片宽度
    H上一次图片高度

    W 2 = W 1 − F S + 1 H 2 = H 1 − F S + 1

    W2=W1FS+1H2=H1FS+1" role="presentation">W2=W1FS+1H2=H1FS+1
    W2H2=SW1F+1=SH1F+1

    8. dropout

    • 在每一次训练步骤中,每个神经元**【包括输入神经元,但是不包括输出神经元】**,有一个概率神经元被临时丢掉,意味着它将被忽视在整个这次训练步骤中,但是有可能下次再被激活
    • 超参数dropout rate,一般设置50%,在训练之后,神经元不会再被dropout

    9. 1*1卷积层

    • 只会改变通道数
    • 因为1*1卷积层不会改变卷积核的大小
      • 可以调整通道数,控制模型复杂度 【升维,降维】
        • 通道数比卷积前小,是对数据降维,降低模型复杂度
        • 通道数比卷积前大,是对数据升维,增加模型复杂度
      • 可以当作全连接层使用【通道数就是神经元的个数】

    10. 数据增强

    • 数据增强:现有数据产生新的训练样本,人工增大训练集,减少过拟合
    • 可以对图片轻微的平移,旋转,改变大小,然后增加这些变化后的图片到训练集,这使得模型可以经受位置,方向,大小的影响,提高模型的泛化能力
  • 相关阅读:
    seaborn
    体系结构27_多处理机(1)
    Redis 要凉了?
    Python音乐信息管理库之beets使用详解
    学习笔记6--车辆线控系统
    【Nano Framework ESP32篇】使用 LCD 屏幕
    Wazuh agent的安装、注册与配置管理
    MapReduce框架原理
    mysql a表like b表的某个字段,mysql一个表的字段like另外一个表的字段
    现在回头看,你有没有写过自己觉得比较愚蠢的代码?
  • 原文地址:https://blog.csdn.net/m0_46926492/article/details/128000369