深度学习

卷积神经网络的结构

  • 卷积层 -> **函数 -> 池化层 -> 全连接层

a、卷积层

卷积层过滤器
  • 数量
  • 核大小 kernel size
  • 步长 stride
  • 零填充 padding

深度学习之卷积神经网络的结构

现在有三维数据 [ 28 * 26] 的图片
  • 过滤器(卷积核)数量100个
  • 卷积核大小为5 * 5
  • 扫射步长为 1
  • 零填充 1

H2=28H_2 = 28,F=5F=5,2P=212P = 2*1,S=1S=1\longrightarrowH2=(285+21)/1+1=26H_2 = (28-5+2*1)/1+1=26

W2=26W_2 = 26,F=5F=5,2P=212P = 2*1,S=1S=1\longrightarrowW2=(265+21)/1+1=24W_2 = (26-5+2*1)/1+1=24

D2=100D_2=100

单张图片得到的的结果是[26,24]的卷积结果,过滤器一共是100个没有考虑,如果考虑了形状是[26,24,100]

卷积层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]
    • filter_height 过滤器的高
    • filter_width 过滤器的宽
    • in_channels 图片通道大小 28 * 28 * 3
    • out_channels 过滤器的数量
  • strides:strides = [1, stride, stride, 1],步长
  • padding:“SAME”, “VALID”,使用的填充算法的类型,
    使用“SAME”。其中”VALID”表示滑动超出部分舍弃,
    “SAME”表示填充,原来的大小

b、**函数

深度学习之卷积神经网络的结构
**函数有什么特征和作用,**函数主要的作用就是处理非线性分割。
左边是Linear函数就是没有**函数,右边使用的是近两年诞生的relu线性整流函数作为**函数。
http://playground.tensorflow.org/
第一,采用sigmoid等函数,反向传播求误差梯度时,计算量相对大,而采用Relu**函数,整个过程的计算量节省很多
第二,对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(求不出权重和偏置)
第三,把图像不相关的特征去除
深度学习之卷积神经网络的结构
**函数: tf.nn.relu(features, name=None)
features:卷积后加上偏置的结果
return:结果

c、池化层

Pooling层主要的作用是特征提取,通过去掉Feature Map中不重要的样本,进一步减少参数数量。Pooling的方法很多,最常用的是Max Pooling。
深度学习之卷积神经网络的结构
池化是缩小高、长方向上的空间的运算。下图所示,进行将 2 * 2的区域集约成1个元素的处理,缩小空间大小。
深度学习之卷积神经网络的结构

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

55000 * 28 * 28 * 100 = 55000 * 14 * 14 * 100 -> [55000,14 * 14 * 100] * [14 * 14 * 100,10] + [10]

相关文章:

  • 2021-09-08
  • 2021-07-02
猜你喜欢
  • 2021-12-02
  • 2021-09-20
  • 2021-12-06
相关资源
相似解决方案