代码链接:
CSDN:
https://download.csdn.net/download/qq_38649386/12677269
GitHub:
实验原理:
参数调优改进代码:
# 构建卷积模型
model = Sequential()
model.add(Conv2D(20, kernel_size=5, padding="same", input_shape=input_shape))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2), strides=(2,2), padding='valid'))
# 增加Dropout层
# 在第一池化层/第二池化层/最后一个池化层的效果都不一样
# 第一个添加的效果最好
model.add(Dropout(0.15))
# 添加规则化器的约束
model.add(Conv2D(50, kernel_size=3, padding="same", kernel_regularizer=keras.regularizers.l2(0.01)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2), strides=(2,2), padding='valid'))
# 增加新的卷积层、池化层
model.add(Conv2D(20, kernel_size=5, padding="same", input_shape=input_shape))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2), strides=(2,2), padding='valid'))
# 扁平化处理
model.add(Flatten())
model.add(Dense(500))
model.add(Activation("relu"))
model.add(Dense(10))
model.add(Activation("softmax"))
图像数据增强:
发现代码有点问题,改完后再发。
实验结果:
硬件受限,只训练5轮,和之前做过的实验也是5轮对比收敛速度。
实验结论:
1.实验对比:
没有任何处理:
参数调优:
图像数据增强:
因为Epoch不够,但是理论上:
没有任何处理的模型在Epoch=40的情况下,accuracy=63.2%,val_accuracy=59.04%.
参数调优模型需要Epoch=80的情况下,可以提升5%左右;
数据增强模型在Epoch=160的情况下,可以提升10%左右;
而上面图片的结果很可能是改进后模型复杂度提高,较低的Epoch收敛速度变慢引起。
问题解决:
无