Python 为什么我的验证准确率停留在65%左右,如何提高?

Python 为什么我的验证准确率停留在65%左右,如何提高?,python,tensorflow,keras,conv-neural-network,Python,Tensorflow,Keras,Conv Neural Network,我正在使用VGG16制作一个图像分类CNN,有5个类别,每个类别有693张图像,宽度和高度为224px,但我的验证精度在15-20个时代后仍停留在60%-65%左右 我已经在使用一些数据增强、批量标准化和退出,我已经冻结了前5层,但我似乎无法将我的准确率提高到65%以上 这些是我自己的图层 img_行,img_列,img_通道=2242243 base_model=applications.VGG16(weights='imagenet',include_top=False,input_shap

我正在使用VGG16制作一个图像分类CNN,有5个类别,每个类别有693张图像,宽度和高度为224px,但我的验证精度在15-20个时代后仍停留在60%-65%左右

我已经在使用一些数据增强、批量标准化和退出,我已经冻结了前5层,但我似乎无法将我的准确率提高到65%以上

这些是我自己的图层

img_行,img_列,img_通道=2242243
base_model=applications.VGG16(weights='imagenet',include_top=False,input_shape=(img_行、img_列、img_通道))
对于基础模型中的层。层[:5]:
layer.trainable=错误
添加_model=Sequential()
add_model.add(展平(输入_shape=base_model.output_shape[1:]))
add_model.add(辍学(0.5))
add_model.add(密集(512,activation='relu'))
add_model.add(BatchNormalization())
add_model.add(辍学(0.5))
add_model.add(密集型(5,activation='softmax'))
模型=模型(输入=基本模型。输入,输出=添加模型(基本模型。输出))
model.compile(loss='sparse\u categorical\u crossentropy',optimizer=optimizers.Adam(lr=0.0001),
指标=[‘准确度’])
model.summary()
这是我的数据集和我的模型

batch\u size=64
纪元=25
列车\数据发生器=图像数据发生器(
旋转范围=30,
宽度\移位\范围=.1,
高度\位移\范围=.1,
水平(翻转=真)
列车数据生成装置(x列车)
历史=model.fit\u生成器(
序列数据生成流(x序列、y序列、批次大小=批次大小),
每个历元的步数=x列。形状[0]//批量大小,
时代,
验证数据=(x检验,y检验),
回调=[ModelCheckpoint('VGG16-transferlearning.model',monitor='val\u acc',save\u best\u only=True)]
)

我希望获得更高的准确度,因为我现在得到的还不够,因此我们非常感谢您的帮助或建议。

您可以尝试以下几点:

  • 减少批量大小
  • 选择另一个优化器:
  • 默认情况下增加学习速率,然后使用回调

但是,像往常一样,这取决于您使用的数据。你的身体很平衡吗

我们需要更多的信息来帮助您,您是如何装载重量的?你是不是在冻一层?你的输入图像的形状是什么?等等,你在不同型号上的准确度是多少?试试resnet或inception。你在做什么来增加数据,图像旋转?您的数据集大小真的只有693吗?你辍学时发生了什么?更改现有图层的大小时发生了什么?当您去掉图层或添加图层时发生了什么?图像的复杂性是什么?这看起来也是一个非常有限的扩充集。尝试更多的增强,包括颜色/模糊/噪声/裁剪/更高级别的旋转等。超出您认为合理的范围,看看它是如何训练的。你会惊讶于它能有多大帮助。如果太多的话,再调回一点。