神经网络(二)

神经网络

1. 神经网络基础

2. 浅层神经网络分析

3. 卷积神经网络

4. 卷积神经网络MNIST数字图片识别


3. 卷积神经网络

深度的神经网络

  • 深度神经网络与更常见的单一隐藏层神经网络的区别在于深度,深度学习网络中,每一个节点层在前一层输出的基础上识别一组特定的特征。随着神经网络深度增加,节点所能识别的特征也就越来越复杂。
  1. 卷积神经网络与简单全连接神经网络的比较
    • 全连接神经网络的缺点
      • 参数太多
      • 没有利用像素之间位置信息
      • 层数限制
  2. 卷积神经网络的发展历史
  • 卷积神经网络的表现:
    CNN错误率.png
    在10和11年时,错误率很高,12年时,卷积神经网络的出现,错误率下降了很多,接下来的几年错误率一直在降低,在15年已经超过了人类水平。

  • 1989年,LeCun发明了卷积神经网络的雏形LeNet,将LeNet改造之后,AlexNet有了历史性的突破,准确率直线上升,各种各样的神经网络都出现了。
    卷积神经网络.png

  1. 神经网络的结构分析
  • 神经网络的基本组成包括输入层、隐藏层、输出层。而卷积神经网络的特点在于隐藏层分为卷积层和池化层(又叫下采样层)。
    - 卷积层:通过在原始图像上平移来提取特征
    - 池化层:通过特征后稀疏参数来减少学习的参数,降低网络的复杂度,(最大池化和平均池化)
    • CNN的结构:
      1. 卷积层过滤器(相当于观察窗口,里面有权重,移动来观察)

        • 个数
        • 大小(一般为奇数1 * 1、3 * 3、5 * 5)
        • 步长(移动的像素数量),太大观察的太粗略,一般为1
          • 移动过程中越过图片大小:
            • 不越过,直接停止观看
            • 就直接超过,用0填充周围
        • 零填充:卷积核在提取特征映射时的动作称之为padding(零填充),由于移动步长不一定能整除整张图的像素宽度。其中有两种方式,SAME和VALID
          • SAME:越过边缘取样,取出的面积和输入图像的像素宽度一致。
          • VALID:不越过边缘取样,取样的面积小于输入的图像的像素宽度。
        • 卷积层输出深度、输出宽度
          • 深度由过滤器个数决定
          • 宽度:
            • 输入体积大小H1 * W1 * D1
            • 四个超参数:
              • Filter数量K
              • Filter大小F
              • 步长S
              • 零填充大小P
            • 输出体积大小H2 * W2 * D2
              • H2 = (H1-F+2P)/S+1
              • W2 = (W1-F+2P)/S+1
              • D2 = K
        • 卷积计算过程(一个通道一个Filter一个步长):
          image.png
        • 从最左上方开始计算,filter覆盖3*3的方块大小,进行卷积计算(对应的位置相乘在相加),得出的数填在红色方块的一个块里,依次移动计算填入红色方块。
        • 当步长为2时:
          image.png
      2. 激活函数

        • Relu函数:
        f(x) = max(0,x)
        
        • sigmoid函数的缺点:
          • 采用sigmoid等函数,反向传播求误差梯度时,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。
          • 对于深度网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(求不出权重和偏置)。
        • 激活函数API:
          • tf.nn.rule(features,name=None)
            • features:卷积后加上偏置的结果
            • return:结果
      3. 池化(Pooling)层

        • Pooling层主要作用是特征提取,通过去掉Feature Map中不重要 的样本,进一步减少参数的数量。Pooling的方法有很多种,最常用的是Max Pooling。Max Pooling的计算方法与卷积层计算法类似,也是用一个小的filter,只不过是选择方框中最大的值,填入最后的结果表中。图下图所示:
          image.png

        • 池化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”。
      4. 全连接层

        • 前面的卷积和池化相当于做特征工程,后面的全连接相当于做特征加权。最后的全连接层在整个卷积神经网络中起到“分类器”的作用。
  1. 卷积网络API介绍
    • tf.nn.conv2d(input, filter,strides=,padding=,name=None)计算给定4-Dinput和fileter张量的2维卷积
      • input:给定的输入张量,具有[batch,height,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一样大。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值