Python 这是一种过度装配的情况吗?CNN图像分类器
请原谅,如果这个问题被认为是离题的,或者只是一个糟糕的问题,我对计算机视觉和CNN都是新手 我一共有3440张图片,总共10节课 每行每列85幅图像: 因为我的数据集中只有3440个图像,所以我使用数据扩充将我的数据集增加到34400个图像。(每幅图像增加10倍) 这是我在两个实例中使用的模型。(一次增加,一次不增加) 我能够将我的准确度从约90%(无增强)提高到约97%(有增强),但训练准确度和验证准确度之间的差异仍然相似 带有数据扩充的图形: 我曾读到,差异较大的非收敛训练和验证精度/损失是过度拟合的迹象 我的CNN模型就是这样吗?我还能做些什么来改进我的模型 完整的代码可以在我的github上找到 谢谢大家,谢谢你们抽出时间 编辑:Python 这是一种过度装配的情况吗?CNN图像分类器,python,tensorflow,machine-learning,image-processing,computer-vision,Python,Tensorflow,Machine Learning,Image Processing,Computer Vision,请原谅,如果这个问题被认为是离题的,或者只是一个糟糕的问题,我对计算机视觉和CNN都是新手 我一共有3440张图片,总共10节课 每行每列85幅图像: 因为我的数据集中只有3440个图像,所以我使用数据扩充将我的数据集增加到34400个图像。(每幅图像增加10倍) 这是我在两个实例中使用的模型。(一次增加,一次不增加) 我能够将我的准确度从约90%(无增强)提高到约97%(有增强),但训练准确度和验证准确度之间的差异仍然相似 带有数据扩充的图形: 我曾读到,差异较大的非收敛训练和验证精度/损
对于增强数据集,训练集为29355张图像,验证集为7331张图像。准确度差为0.9972(培训)与0.9750(验证),损失差为0.0102(培训)与0.1245(验证)
验证图像也得到了增强,我将更改为仅使用非增强图像 您可以使用一些正则化()例如辍学。培训和验证准确性之间有什么区别?验证集有多大?训练集是29355个图像,验证集是7331个图像。准确度之间的差异为0.9972 vs 0.9750,差异是损失是0.0102 vs 0.1245我认为更好的方法是在增强之前创建验证集,尤其是当您希望稍后将其与没有增强的数据的结果进行比较时。我遇到的“问题”是,在增强和未增强的数据集之间,图的形状几乎相同。训练和验证的准确度和损失是否总是一致的?我会按照您的建议在扩充之前尝试进行验证集,但这会导致验证集与测试集相比非常小(可能是960)。(>20000)这会是一个问题吗?“我遇到的‘问题’是,在增强数据集和未增强数据集之间,图形的形状几乎是相同的”->这表明增强获得了利润,但模型仍然有点过盈。你可以尝试使用一些规则。
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"])