手机网站制作公司/优质网站
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 激活函数:
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”