class9--tensorflow:卷积神经网络

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

参数个数:(前层×后层+后层)的和


问题:

待优化的参数过多容易导致模型过拟合。


实际应用:

会先对原始图像进行特征提取再把提取到的特征喂给全连接网络。


卷积(convolutional):卷积可认为是一种有效提取图像特征的方法。

一般会用正方形卷积核,遍历图片上的每个点。图片区域内,相对应的每一个像素值,乘以卷积核内相对应点的权重,求和,再加上偏置。


没有池化:输出图片边长=(输入图片的边长-卷积核长+1)/步长   (向上取整)

池化(padding)(在图片周围进行全零填充):输入 图片边长/步长 (向上取整)


在tensorflow框架中,用参数padding='SAME'或padding='VALID'表示


tensorflow计算卷积:

tf.nn.conv2d(输入描述,eg.[batch_size,5,5,1]

卷积核描述,eg.[3,3,1,16]

核滑动步长,[1,1(行步长),1(列步长),1]

padding='VALID')


三通道(每个通道的卷积值相加,输出是1个通道):




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



tensorflow计算池化:

pool = tf.nn.max_pool/tf.nn.avg_pool(输入描述,eg.[batch,28,28,6]

池化核描述(仅大小),eg.[1,2,2,1]

池化核滑动步长,eg.[1,2,2,1]

padding='SAME')


舍弃dropout:在神经网络的训练过程中,将一部分神经元按照一定概率从神经网络中暂时舍弃。使用时被舍弃的神经元恢复链接


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

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


卷积NN:借助卷积核(kernel)提取特征后,送入全连接网络

CNN模型的主要模块:卷积(convolution)-激活(activation)-池化(pooling)-全连接(fc)

cnn模型的发展历史:lenet-5 ---AlexNet---VGGNet---GoogleNet---ResNet---.....



猜你喜欢

转载自blog.csdn.net/jane_6091/article/details/81065705
今日推荐