请问我,如果这个问题被认为是题外之意,或者通常只是一个不好的问题,我通常对Computer Vision和CNN都是陌生的。
我总共有3440张图像,共10个课。
每行每列85张图像:
因为我的数据集中只有3440张图像,所以我使用数据增强将数据集增加到34400张图像。 (每张图片放大10次)
aug = ImageDataGenerator(
rescale = 1./255,
rotation_range = 20,
width_shift_range = 0.10,
height_shift_range = 0.10,
zoom_range= 0.05
)
这是我用于两个实例的模型。 (一旦增加,一次就没有)
model = Sequential()
model.add(Conv2D(32, (3,3), input_shape = (50, 50, 3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(64, (3, 3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(64, (3, 3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.25))
# 2 hidden layers
model.add(Flatten())
model.add(Dense(128))
model.add(Activation("relu"))
model.add(Dense(128))
model.add(Activation("relu"))
# The output layer with 10 neurons, for 10 classes
model.add(Dense(10))
model.add(Activation("softmax"))
# Compiling the model using some basic parameters
model.compile(loss="sparse_categorical_crossentropy"
,optimizer="adam"
,metrics=["accuracy"])
我能够将我的准确度从〜90%(不增加)提高到〜97%(不增加),但是训练准确度和验证准确度之间的差异仍然相似。
具有数据增强功能的图形:
我读到,非融合的训练和验证准确性/损失相差很大,这是过度拟合的迹象。
我的CNN模型是否属于这种情况?我还能做些什么来改善我的模型?
完整代码可以在我的github上找到
https://github.com/jwngo/SimpleImageClassifier
谢谢大家,感谢您的宝贵时间。
编辑: 对于扩充数据集,训练集为29355张图像,验证集为7331张图像。准确性之间的差异为0.9972(培训)与0.9750(验证),损失的差异为0.0102(培训)与0.1245(验证)
验证图像也得到了增强,我将更改为仅使用非增强图像。
答案 0 :(得分:0)
您可以使用一些正则化(https://www.analyticsvidhya.com/blog/2018/04/fundamentals-deep-learning-regularization-techniques/),例如退出。培训和验证准确性之间有什么区别?验证集有多大?