Tensorflow笔记——卷积神经网络

实践反作用于理论

一、概论。

  全连接NN:每个神经元与前后相邻层的每一个神经元都有连接关系,输入是特征,输出为预测的结果,参数的个数:∑( 前层 X 后层 + 后层 )

  为防止过拟合,实际应用中会先对原始图像进行特征提取,在把提取到的特征喂给全连接网络,

  卷积(Convolutional):可认为是一种有效提取图像特征的方法。一般会用一个正方形卷积核,遍历图片上的每个点。图片区域内,相对应的每一个像素值,乘以卷积核内相对应点的权重,求和,再加上偏置。

  池化(pooling):用于减少特征数量。最大值池化可以提取图片纹理,均值池化可以保留背景特征

## 输出图片边长=( 输入图片边长 - 卷积核长+1 ) / 步长   

 

二、CNN模型的主要模块

1、高层次抽象特征 精减特征点:卷积 激活 池化

2、全连接

 

三、tensorflow相关函数

  1、计算卷积:

  tf.nn.conv2d (输入描述,eg.[ batch , 5,5( 注:5,5分辨率 ),3( 注:通道数,此处为rgb三通道 )  ]   

        卷积核描述,eg.[ 3,3(  注:行列分辨率:3*3 ), 1( 注:通道数) ,16(注:核个数)  ] ( 注:说明输出深度是16,输出通道为16,有16个输出 )

        核滑动步长,eg.[ 1(注:固定是1) , 1( 注:行步长), 1( 注:列步长) ,1(注:固定是1,两个固定表示不在batch或channel间进行滑动) ]

        padding='VALID' ( 注:valid表示不用全零填充,否则为same )  

        )

  2、计算池化:

  最大池化为tf.nn.max_pool,平均池化: tf.nn.avg_pool

  pool=tf.nn.max_pool(  输入描述,eg.[ batch , 28,28 (注:行列分辨率 28*28 ) ,6(通道数)  ] 

            池化描述(仅大小),eg.[ 1(注:固定是1) ,  2,2(注:行列分辨率 2*2),  1(注:固定是1) ]

            池化核滑动步长,eg.[1(注:固定是1) , 2( 注:行步长), 2( 注:列步长) ,1(注:固定是1)  ] 

            padding = ' SAME '

          )

  3、舍弃(Dropout):

  在神经网络的训练过程中,将一部分神经元按照一定概率从神经网络中暂时舍弃。使用时被舍弃的神经元恢复连接。用于防止过拟合。

  tf.nn.dropout( 上层输出,暂时舍弃的概率 ) 

  

posted @ 2019-03-01 20:54  bear_ge  阅读(222)  评论(0编辑  收藏  举报