日月光华深度学习-计算机视觉-卷积神经网络
计算机视觉-卷积神经网络
这是日月光华深度学习的第四章卷积神经网络部分。前三章没有做笔记觉得效果不好,以后慢慢补上。 4.1-4.3原理部分还是主要看李宏毅的机器学习部分比较好。
[4.1]–认识卷积神经网络(一)
CNN可以解决像素较大图像flatten()
之后参数爆炸的问题。语音处理也可以使用CNN。
上图中每个卷积核有25个可训练参数
下图中每个卷积核有9个可训练参数
[4.2]–认识卷积神经网络-卷积层和池化层
池化层下采样
卷积 池化 采样使得图片减小。
卷积核的大小就是移动小方块的个数
跨度的大小引起生成图像的大小变换跨度为1小方块挨个走,
边缘填充?
还有平均池化等。一般用最大池化。
[4.3]–卷积神经网络整体架构
(1)多个卷积核把图像变厚。彩色图片用RGB色彩模式,直接出来三层。训练多个卷积核。
layers.Conv2D()
中的filter
参数就是卷积核的个数和卷积层的厚度直接相关。
(2)池化将图片变小,像素数减少。
卷积运算:变小变厚。
[4.4]–卷积神经网络识别Fashion mnist数据集
CNN对电脑运算速度要求高。如果电脑没有GPU,可以用Kaggle的Kernels免费提供的GPU进行CNN运算。
test_image = np.expand.dims(test_images, -1)
将原来图片的三个维度增加一个维度。(图片数目、高度像素数、宽度像素数、channel)
分析上图每一层的数据维度变化情况
Dense层连接的是一个二维数据,四维数据不能直接与Dense层连接。二维数据输入Dense层之后用Softmax进行激活,就能输出一个概率值。
model.add(tf.keras.layers.GlobalAveragePooling2D())#可以将四维数据变为二维数据。
全局平均池化,将12*12维度的数值进行平均。
[4.6]–卷积神经网络的优化
由于是0123这种label,所以用上图所示的optimizer
训练过程。
发现出现了过拟合,需要进行优化。
①网络拟合能力有待提高,对训练数据都没有拟合好。
需要增加CNN的层数,提高每一层的额单元数,提高模型拟合能力。
②test和train数据有差异,有过拟合。
添加dropout层,减少过拟合。
优化后的CNN模型。