1、深度学习网络

深度学习网络与更常见的单一隐藏层神经网络的区别在于深度,深度学习网络中,每一个节点层在前一层输出的基础上学习识别一组特定的特征。随着神经网络深度增加,节点所能识别的特征也就越来越复杂。

1.1 卷积神经网络与简单的全连接神经网络的比较

全连接神经网络的缺点
  • 参数太多,在cifar-10的数据集中,只有32 x 32 x 3,就会有这么多权重,如果说更大的图片,比如200 x 200 x 3就需要120000多个,这完全是浪费

  • 没有利用像素之间位置信息,对于图像识别任务来说,每个像素与周围的像素都是联系比较紧密的。

  • 层数限制

卷积神经网络(CNN):是一种前馈神经网络,
  • 是受生物学上感受野的机制而提出的;
  • 在视觉神经系统中,一个神经元的感受野是指视网膜上的特定区域,只有这个区域的刺激才能够激活该神经元。
卷积神经网络有三个结构上的特性
  • 局部链接
  • 权重共享
  • 空间或时间上的次采样
神经网络(neural networks)的基本组成包括输入层、隐藏层、输出层。而卷积神经网络的特点在于隐藏层分为卷积层和池化层(pooling layer,又叫下采样层)。
  • 卷积层: 通过在原始图像上平移来提取特征,每一个特征就是一个特征映射

  • 池化层: 通过特征后稀疏参数来减少学习的参数,降低网络的复杂度,(最大池化和平均池化)

在这里插入图片描述

1.2 卷积神经网络的结构分析

在这里插入图片描述

1.2.1 卷积层

在这里插入图片描述在这里插入图片描述

单通道图片卷积层计算过程
在这里插入图片描述在这里插入图片描述
多通道图片-外围补充与多Filter【卷积网络动态图演示】
过滤器w0观察的窗口过滤器w1观察的窗口
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

1.2.2 激活层与池化层

增加激活函数:增加⽹络的⾮线性分割能⼒。
为什么选用Relu激活函数,而不用sigmoid等函数?
  • 第一,采用sigmoid等函数,反向传播求误差梯度时,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多

  • 第二,对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(求不出权重和偏置)

卷积层结束后就会经过一个激活函数:

在这里插入图片描述

池化层

在这里插入图片描述

全连接层

在这里插入图片描述

1.3 卷积网络API介绍

1.3.1 卷积层:
  • 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]
      out_channels指的是输出多少张表【结论】
    • strides:strides = [1, stride, stride, 1],步长
    • padding:“SAME”, “VALID”,使用的填充算法的类型,使用“SAME”。其中”VALID”表示滑动超出部分舍弃,“SAME”表示填充,使得变化后height,width一样大
1.3.2 激活函数:
  • tf.nn.relu(features, name=None)
    • features:卷积后加上偏置的结果

    • return:结果

1.3.3 池化:
  • 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”

2、面试题分析

在这里插入图片描述

更多推荐