目前,我正在尝试在VGG-16模型上训练一个数据集。问题是准确度变化不大,但它并没有固定在一个固定的精度上。下面是情节图。有什么建议吗?在
我已经遵循了几个指南来解决这个问题,这是关于卡住的准确性,但他们不起作用。在
{1美元^
编辑:
该模型的输入大小为600张224x224x3的图像。此外,还有两个标签dog和cat(0,1)。在
属性
imageSize = (224,224,3)
epochs = 25
batch_size = 32
型号
^{pr2}$图像生成器
from keras.applications.vgg16 import preprocess_input
from keras.preprocessing import image
from keras.preprocessing.image import ImageDataGenerator
imgGen = ImageDataGenerator(rotation_range=20,
width_shift_range=0.1,
height_shift_range=0.1,
shear_range=0.1,
zoom_range=0.2,
horizontal_flip=True,
vertical_flip=True,
preprocessing_function = preprocess_input)
拟合模型
r = model.fit_generator(imgGen.flow(trainX, trainY, batch_size=batch_size),
validation_data = imgGen.flow(testX, testY, batch_size=batch_size),
epochs=epochs,
steps_per_epoch=len(trainX)//batch_size,
validation_steps=len(testX)//batch_size,
verbose = 1,
)
不要使用
adam
优化器来训练VGG,众所周知,它失败的原因是VGG网络中的大量参数。只需使用sgd
并调整学习速率,比如从0.01开始,增加10倍或0.1倍,直到训练损失很好地减少。在我建议您对预先训练的模型进行微调,并冻结前几层的权重。 比如:
25个时代还不够,试试100个时代或200个时代
相关问题 更多 >
编程相关推荐