文章目录
1、卷积神经网络与简单的全连接神经网络的比较
(1)全连接神经网络的缺点
- 参数太多,在cifar-10的数据集中,只有32323,就会有这么多权重,如果说更大的图片,比如2002003就需要120000多个,这完全是浪费
- 没有利用像素之间位置信息,对于图像识别任务来说,每个像素与周围的像素都是联系比较紧密的。
- 层数限制
2、卷积神经网络的发展历史
卷积神经网络错误率
3、卷积神经网络的结构分析
神经网络(neural networks)的基本组成包括输入层、隐藏层、输出层。而卷积神经网络的特点在于隐藏层分为卷积层和池化层(pooling layer,又叫下采样层)。
(1)卷积层:通过在原始图像上平移来提取特征,每一个特征就是一个特征映射
(2)池化层:通过特征后稀疏参数来减少学习的参数,降低网络的复杂度,(最大池化和平均池化)
数据变化:
4、卷积神经网络的结构
(1)卷积层过滤器(观察窗口)
- 个数
- 大小(一般为奇数)
- 步长(窗口移动的像素数量,一般取1)
- 零填充(窗口移动过程中超出像素位置用0填充)
卷积层输出深度、输出宽度
深度由过滤器个数决定
输出宽度:
(2)激活函数
(3)池化层
5、卷积网络API介绍
(1)卷积层
卷积层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一样大
(2)新的激活函数-Relu
激活函数API:
tf.nn.relu(features, name=None)
features:卷积后加上偏置的结果
return:结果
增加激活函数:增加网络的非线性分割的能力
sigmoid函数缺点:
第一,采用sigmoid等函数,反向传播求误差梯度时,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多
第二,对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(求不出权重和偏置)
(3)池化层
池化层(Pooling)计算:
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”
(4)Full Connected层
分析:前面的卷积和池化相当于做特征工程,后面的全连接相当于做特征加权。最后的全连接层在整个卷积神经网络中起到“分类器”的作用。