一概念卷积神经⽹络简称为卷积⽹络与普通神经⽹络的区别是它的卷积层内的神经元只覆盖输⼊特征局部范围的单元具有稀疏连接sparse connectivity和权重共享weight shared的特点⽽且其中的过滤器可以做到对图像关键特征的抽取。因为这⼀特点卷积神经⽹络在图像识别⽅⾯能够给出更好的结果。二卷积层原理卷积⽹络是通过卷积层Conv2D层中的过滤器filter⽤卷积计算对图像核⼼特征进⾏抽取从⽽提⾼图像处理的效率和准确率。机器是通过模式pattern进⾏图像的识别。优越性是平移不变性在图像中学习到某个模式它就可以在任何地⽅识别这个模式。图像对于计算机来说就是一个矩阵。⽤滑动窗⼝抽取局部特征过滤器进⾏卷积计算卷积核进⾏图像特征的提取。不同过滤器卷积核抽取不同的特征卷积的原理抠图卷积核对抠下来的图进⾏运算形成响应通道。填充和步幅。model.add(Conv2D(filters32, # 添加Conv2D层, 指定过滤器的个数, 即通道数 kernel_size(3, 3), # 指定卷积核的⼤⼩ activationrelu, # 指定激活函数 input_shape28, 28, 1))) # 指定输⼊数据样本张量的类型卷积和池化计算原理请看b站。懒得写了。卷积计算直接相乘加一起。普通乘法不是矩阵乘法填充padding操作。填充就是在输⼊特征图的边缘添加适当数⽬的空⽩⾏和空⽩列使得每个输⼊块都能作为卷积窗⼝的中⼼然后卷积运算之后输出特征图的维度将会与输⼊维度保持⼀致。填充操作并不是⼀个必需选项。如果需要可以通过Conv2D层的padding参数设置model.add(Conv2D(filters32,#过滤器kernel_size(3,3),# 卷积核⼤⼩strides(1,1),# 步幅paddingvalid))# 填充步幅stride影响输出尺⼨的另⼀个因素是卷积操作过程中窗⼝滑动抽取特征时候的步幅stride三池化层池化层的功能是对特征图进⾏下采样。在最⼤池化之后特征维度的尺⼨基本上都会减半。最⼤池化的原理和卷积有些类似也是从输⼊特征图中提取窗⼝。但是最⼤池化使⽤固定的张量运算对局部图块进⾏变换输出每个通道的最⼤值⽽不是像卷积核那样权重是通过学习⽽得到的。池化也有填充和步幅只不过最大池化是取区域内最大值而不是像卷积相乘。四性能优化第⼀招更新优化器并设置学习速率cnn.compile(losscategorical_crossentropy,# 损失函数optimizeroptimizers.Adam(lr1e-4),# 更新优化器并设定学习速率metrics[acc])# 评估指标第⼆招添加Dropout层降低过拟合⻛险。进⾏数据增强数据增强把⼀张图像当成7张、8张甚⾄10张、100张来⽤。是通过对图像的平移、颠倒、倾斜、虚化、增加噪声等多种⼿段。这是利⽤能够⽣成可信图像的随机变换来增加样本数如下图所示。这样训练集就被⼤幅地增强了⽆论是图像的数⽬还是多样性。因此模型在训练后能够观察到数据的更多内容从⽽具有更好的准确率和泛化能⼒。在Keras中可以⽤ImageData- Generator⼯具来定义⼀个数据增强器# 定义⼀个数据增强器, 并设定各种增强选项from keras.preprocessing.imageimportImageDataGenerator augsgenImageDataGenerator(featurewise_centerFalse,samplewise_centerFalse,featurewise_std_normalizationFalse,samplewise_std_normalizationFalse,zca_whiteningFalse,rotation_range10, zoom_range0.1,width_shift_range0.2,height_shift_range0.2,horizontal_flipTrue,vertical_flipFalse)augs_gen.fit(X_train)# 针对训练集拟合数据增强器⽹络还是⽤回相同的⽹络唯⼀的区别是在训练时需要通过fit_generator⽅法动态⽣成被增强后的训练集historycnn.fit_generator(# 使⽤fit_generatoraugs_gen.flow(X_train, y_train,batch_size16),# 增强后的训练集validation_data(X_test, y_test),# 指定验证集validation_steps100,# 指定验证步⻓steps_per_epoch100,# 指定每轮步⻓epochs50,# 指定轮次verbose1)# 指定是否显示训练过程中的信息