CNN(Convolution Neural Network,卷积神经网络)主要用于图像分类问题
但CNN不仅可以处理图像,还可以处理音频、文本、游戏等,只要数据能变成图像格式就可以
若数据把两列互换,信息量不受影响,则表示该类数据不能用CNN处理
结构:卷积层 —> 池化层 —> 卷积层 —> 池化层 —> 全连接层 —> 输出层【卷积、池化可以堆积很多层】
Having more layers helps the CNN to learn features in a hierarchical manner. For example the first layer learns various edge orientations in the image, the second layer learns basic shapes (circles, triangles, etc.) and the third layer learns more advance shapes (e.g shape of an eye, shape of a nose), and so on. This delivers better performance
卷积层(Convolution):提取图像的底层特征,将原图中符合卷积核特征的特征提取出来(卷积核特征是由网络自己学习出来的)
池化层/降采样层/下采样层(Pooling/Subsampling):降低feature map的维度,防止过拟合
全连接层/密集连接层(Fully Connected/Dense Layer):将池化层的结果拉平(flatten)成一个长向量,汇总之前卷积层和池化层得到的底层的信息和特征
输出层(Output):全连接+激活(二分类用sigmoid;多分类用softmax归一化)
Resnet结构
根据layer的不同,ResNet模型分为5个版本:18/34(浅层);50/101/152(深层)
对于浅层网络(18/34):
conv2_x第一层为实线残差结构,因为通过最大池化下采样后得到的输出是[56,56,64],刚好是实线残差结构所需要的输入shape
conv3_x第一层为虚线残差结构,输入特征矩阵shape是[56,56,64],输出特征矩阵shape是[28,28,128]
对于深层网络(50/101/152):
conv2_x第一层为虚线残差结构,因为通过最大池化下采样后得到的输出是[56,56,64],而实线残差结构所需要的输入shape是[56,56,256]
conv3_x第一层为虚线残差结构,输入特征矩阵shape是[56,56,256],输出特征矩阵shape是[28,28,512]
这里conv2_x对应的第一个虚线残差层与conv3/4/5_x不同,仅调整了特征矩阵的深度(64→256),高和宽不变;而conv3/4/5_x对应的第一个虚线残差层同时改变了特征矩阵的高、宽和深度
无论是浅层网络还是深层网络,conv3_x、conv4_x、conv5_x的第一层都为虚线残差结构,因为需要将上一层输出特征矩阵的高、宽、深度调整为当前层所需输入特征矩阵的高、宽、深度(Down-sampling is performed by conv3_1、conv4_1 and conv5_1 with a stride of 2)
开源代码
百度网盘:链接:https://pan.baidu.com/s/1C7ObZZbVGpRO3gf7Vhdx5A?pwd=k19z
提取码:k19z
更多代码 加微信 AI_xiaoao
回复题目【基于XXXX的XXXX系统设计】免费获取源代码
所有代码均可远程部署安装+代码调试讲解