• 22-1:卷积神经网络-卷积(convolution)


    1:卷积

    卷积操作在信号处理中的定义

     故卷积操作:对应单元元素相乘再相加

    (1)卷积核

    (1.1)锐化卷积核

     

     (1.2)模糊卷积核

     (1.3)边缘检测

    2:卷积神经网络

    (2.1)卷积操作

     

     【注】

    Kernel_channels:卷积核通道,表示使用的卷积核的种类个数

    Input_channels:输入通道,如果时输入为图片:彩色Input_channels=3,灰色=1.

    Kernel_size表示卷积和的shape大小例如:3*3

    stride:表示移动的步长

    padding:表示填充的行或列数:如果左右都填充2列,则等于2。

     (2.2)Multi-Kernel多个卷积核

     【注】

    x:[b,3,28,28]中第1,2,3,4维度表示图片的数量、图片的channels即RGB三个通道、图片的大小(长宽)

    one k:[3,3,3]中的1,2,3维度分别表示:与x中的2维度的大小相等且含义相对应(也即代表map数量)、2,3维度表示卷积核的大小(kernel_size)

    multi-k[16,3,3,3]中的1,2,3维度分别表示卷积核的种类数量(Kernel_channel)、2维度表示与one k中的维度表示相同

     bias:[16]其为偏置:1维度与multi-k中的第一维度对应,值相等。

    out:[b,16,28,28]中的维度表示:1维度表示图片的刷数量、2维度表示卷积核的种类数量(Kernel_channel)、3,4维度表示图片的大小

    [注]multi-k:可以用weight、Filter、kernel表示

    [注]每一种卷积核在每一个map上(等于x第2维度的大小:也即是图片对应的3个通道)卷积操作之后(对应相乘再相加),生成的map再进行对应相加,生成一种卷积核对应生成的一个最终的map。(如:最后的两张绿色map)

    例子:邮政编码识别时的一个网络:LeNet-5

     (2.3)pytorch实现一个二维图片的卷积运算

    方法1(类风格的实现):nn,Conv2d

    [注]nn.Conv2d(pa1,pa2)pa1表示input的channel(假如输入的是一张彩色图片,channel=3),pa2表示kernel(卷积核)种类的数量,kernel_size表示卷积核的大小,stride表示步长,padding表示左右两侧需要填充的列数。

     [注]首先使用nn.Conv2D()实例化一个卷积层,然后调用类的实例化layer()完成前向传播(这里不推荐直接调用forward()方法)。

    [注]之所以推荐使用类的实例化layer(),是因为会先调用hooks,然后调用forward不仅可以达到目的,还可以完成pytorch自带的功能建设。

     [注]通过实例化的类,我们可以查看其内部的参数weight,bias。由于需要迫使分类,故参数w和b需要具有梯度信息,才能实现更新,故被自动设置为具有梯度。

    方法2(函数风格的实现):

  • 相关阅读:
    服务器消息机制实现记录
    转载SQL经典代码按某一字段分组取最大(小)值所在行的数据
    记录js获取当前URL
    (原创)xilinx IP建立向导创建的目录和文件都是做什么的?由错误ERROR:HDLCompiler:Instantiating <xx> from unknown module <xx>引发的思考
    [转]NTFS3G的安装和配置
    (原创)Notepad++怎么实现双视图/双窗口?
    (原创)Quartus硬件工程路径改变,nios工程该怎么办?
    (原)verilog中的reg类型变量,一定会综合出触发器吗?
    (Windows)使用纯净版本的系统碟安装系统后没有网卡驱动怎么办?
    [转]NIOS_II的Boot过程分析
  • 原文地址:https://www.cnblogs.com/jiafeng1996/p/15095894.html
Copyright © 2020-2023  润新知