1.全连接神经网络的局限性:
- 当图片分辨率进一步增加时,当隐层数量增加时,参数会过多,参数增多导致计算速度缓慢,过拟合问题,需要合理的结构来有效减少参数个数.CNN可看做神经认知机的推广形式,CNN是一个多层的神经网络,每层由多个二维平面组成,其中每个平面由多个独立神经元组成.
2
2.1 CNN结构:
输入层:将每个像素代表一个特征点输入到网络中
卷积层:卷积运算的主要目的是使原信号特征增强,并降低噪音
降采样层:通过减少矩阵的长和宽,降低网络训练参数及模型的过拟合程度
全连接层:对生成的特征进行加权
softmax层:获得当前样例属于不同类别的概率
2.2 卷积
权值矩阵称为卷积核
卷积核在2维输入数据上滑动,对当前输入部分的元素进行矩阵乘法,然后将结果汇为单个输出像素值,重复直到
遍历整个图像,这个过程称为卷积
卷积操作之后的图像称为特征图feature map
局部连接:每个输入特性不用查看每个输入特征,只需查看部分输入特征
权值共享:卷积核在图像上滑动过程保持不变
多通道卷积:每个通道使用一个卷积核进行卷积操作,然后将这些特征图相同位置上的值相加,生成一个特征图
[m,m]->[n,n]
->[n,n]
->[n,n]
[m,m]through不同卷积核生成不同特征图,然后将这些特征图相加,然后加偏置,生成一张特征图
对图像用一个卷积核进行卷积运算,实际上是一个滤波的过程
每个卷积核都是一种特征提取方式,就像一个筛子,将图像中符合条件的部分筛选出来
padding 0填充 用额外的假象素 使得生成的特征图的尺寸和原图像的尺寸相等
2.3 pooling池化
降采样是降低特定信号的采样率的过程
计算图像一个区域上的某个特定特征的平均值或者最大值,这种聚合操作成为池化
卷积层的作用是探测上一层特征的局部连接,而池化的作用是在语义上把相似的特征合并起来,从而达到降维的目的
这些概要统计特征不仅具有低得多的维度,同时还会改善结果
均值池化:
最大池化:对池化区域内所有像素点取最大值,得到的特征纹理信息更加敏感
均值池化:对池化区域内像素点去均值,这种方法得到的特征数据对背景信息更加敏感
步长:卷积核在图片上移动的格数
步长大于1的卷积可以达到降维的目的 导致池化层是可选择的
2.4 卷积函数
import tensorflow as tf
import numpy as np
tf.nn.conv2d(input,#需要做卷积的输入数据[batch,in_height,in_width,in_chnnels]
filter,#卷积核[filter_height,filter_width,in_chnnels,out_chnnels] #卷积核的高 宽 输入通道 输出通道数
strides,#图像每一维的步长,一维向量,有4个元素
padding,#SAME边缘填充适用于全尺寸操作 VALID表示边缘不填充
use_cudnn_on_gpu #默认
name #默认
)
-
参数介绍
input 4维向量
batch 图片数量
in_height[h1,h2,h3,…h[batch]]batch个tensor的height组成的一维向量
in_width[w1,w2,w3,…w[batch]]batch个tensor的width组成的一维向量
in_chnnels[c1,c2,c3…c[batch]]batch个tensor的in_chnnels组成的一维向量
filter:
filter_height卷积核的高度 [fh1,fh2,fh3,fh4…fhbatch]
filter_width 卷积核的宽度 [fw1,fw2,fw3,…fwbatch]
inchnnels 图像通道数
out_chnnels 滤波器个数
strides:一维向量,长度为4 [batch方向,height方向,width方向,chnnels方向]
2.5池化函数
tf.nn.max_pool(value,ksize,strides,padding,name=None)
value 池化的输入[batch, height, width, chnnels]
ksize:池化窗口的大小由于一般不在batch和chnnels上池化,所以ksize一般是[1,height,width,1]
strides:图像每一维的步长
padding:和卷积函数中padding含义一样