美文网首页
34-卷积神经网络(Conv)

34-卷积神经网络(Conv)

作者: jxvl假装 | 来源:发表于2019-10-05 11:18 被阅读0次

    深度学习网络和普通神经网络的区别

    深度学习与神经网络的区别

    卷积神经网络

    基础

    全连接神经网络的缺点

    • 参数太多,在cifar-10的数据集中,只有32*32*3,就会有这么多权重,如果说更大的图片,比如200*200*3就需要120000多个,这完全是浪费
    • 没有利用像素之间位置信息,对于图像识别任务来说,每个像素与周围的像素都是联系比较紧密的。
    • 层数限制

    卷积神经网络的错误率

    卷积神经网络的错误率

    卷积神经网络的发展历程

    卷积神经网络的发展

    卷积神经网络的结构

    卷积神经网络的结构

    结构特点:
    神经网络(neural networks)的基本组成包括输入层、隐藏层、输出层。而卷积神经网络的特点在于隐藏层分为卷积层和池化层(pooling layer,又叫下采样层)。

    • 卷积层:通过在原始图像上平移来提取特征,每一个特征就是一个特征映射
    • 池化层:通过特征后稀疏参数来减少学习的参数,降低网络的复杂度,(最大池化和平均池化)


      卷积神经网络的数据变化

    卷积层

    卷积过程

    卷积的过程

    纠正:卷积层的过滤器,就是一个矩阵,里面的元素是对应扫描时每个像素点的权重

    卷积层的计算过程

    即:每个过滤器会产生一张feature map

    0填充的两种方式
    卷积核在提取特征映射时的动作称之为padding(零填充),由于移动步长不一定能整出整张图的像素宽度。其中有两种方式,SAME和VALID

    • SAME:越过边缘取样,取样的面积和输入图像的像素宽度一致。
    • VALID:不越过边缘取样,取样的面积小于输入人的图像的像素宽度

    彩色图片的卷积过程

    由于彩色图片有3个通道,即3张表,所以filter需要分3次去分别观察,每次观察的结果直接相加作为最后的结果


    彩色图片的观察

    过滤器的个数

    有几个过滤器,就会生成几张表。eg:
    对于[28, 28, 1]的图片,如果有32个过滤器,就会卷积的结果就为[28, 28, 32],相当于图片被“拉长”了

    观察结果大小的计算

    面试可能考

    观察结果的计算

    注意:如果计算结果出现小数,需要结合情况具体考虑,而不是说直接四舍五入

    卷积的api

    """
    tf.nn.conv2d(input, filter, strides=, padding=, name=None)
    计算给定4-D input和filter张量的2维卷积
        input:给定的输入张量,具有[batch,heigth,width,
        channel],类型为float32,64
        filter:指定过滤器的大小,[filter_height, filter_width, 
               in_channels, out_channels]。输入通道:图片的通道数;输出通道:过滤器个数(即输出有多少张结论)
        strides:strides = [1, stride, stride, 1],步长,步长过大容易造成信息的遗漏
        padding:“SAME”, “VALID”,使用的填充算法的类型,
        使用“SAME”。其中”VALID”表示滑动超出部分舍弃,
        “SAME”表示填充,使得变化后height,width一样大
    """
    

    激活层

    在卷积神经网络中,主要使用Relu函数作为激活函数


    Relu函数

    即在这里使用relu函数去掉了像素中小于0的值

    神经网络中为什么要使用激活函数

    1. 增加激活函数就是增加神经网络非线性分割的能力

    为什么使用relu而不再使用sigmoid函数?

    1. 采用sigmoid等函数,反向传播求误差梯度时,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多
    2. 对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(求不出权重和偏置)(因为有次方运算)

    api

    """
    tf.nn.relu(features, name=None)
        features:卷积后加上偏置的结果
        return:结果
    """
    

    卷积就是进行特征的提取,观察更加仔细,然而,观察仔细就意味着数据多,运算量增加,这就需要使用池化层以减少计算量

    池化层

    Pooling层主要的作用是特征提取,通过去掉Feature Map中不重要的样本,进一步减少参数数量。Pooling的方法很多,最常用的是Max Pooling。

    池化层也有一个窗口大小(过滤器)


    池化过程

    即:池化过程让图片变得更“窄”

    即:卷积层使得图片变长,池化层使得图片变窄,所以经过卷积,图片越来越“细长”

    api

    """
    tf.nn.max_pool(value, ksize=, strides=, padding=,name=None)
        输入上执行最大池数
        value:4-D Tensor形状[batch, height, width, channels]
        ksize:池化窗口大小,[1, ksize, ksize, 1]
        strides:步长大小,[1,strides,strides,1]
        padding:“SAME”, “VALID”,使用的填充算法的类型,
        使用“SAME”
    """
    

    池化中SAME的计算方式与卷积过程中SAME的计算方式一样。eg:
    [None, 28, 28, 32]的数据,经过2x2,步长为2,padding为SAME的池化,变成了[None, 14, 14, 32]

    全连接层

    分析:前面的卷积和池化相当于做特征工程,后面的全连接相当于做特征加权。最后的全连接层在整个卷积神经网络中起到“分类器”的作用。

    所以神经网络也相当于是一个特征选择的方式

    相关文章

      网友评论

          本文标题:34-卷积神经网络(Conv)

          本文链接:https://www.haomeiwen.com/subject/lnywuctx.html