val_loss增加,而val_acc使用pre_training模型inception_v3保持在60%

时间:2017-05-23 08:33:32

标签: python keras

我的代码:

img_width, img_height = 139, 139
train_data_dir = 'newdata64/train'
validation_data_dir = 'newdata64/validation'
nb_train_samples =1500
nb_validation_samples = 948
epochs = 1000
batch_size = 10

base_model = InceptionV3(weights='imagenet', 
include_top=False,input_shape=(img_width,img_height,3))
x = base_model.output
x = Flatten()(x)
x = Dense(64)(x)
x = BatchNormalization()(x)
x = Activation('relu')(x)

x = Dropout(0.8)(x)

x = Dense(2)(x)
x = BatchNormalization()(x)
x = Activation('softmax')(x)
model = Model(inputs=base_model.input, outputs=x)
model.compile(optimizer=SGD(lr=0.00001, momentum=0.4), 
loss='categorical_crossentropy',metrics=['accuracy'])

acc-epoch

loss-epoch

我已尝试使用图像生成器进行数据论证,添加dropout(0.5),在FC图层后添加BN,但val_loss正在增加,而损失会下降,cal_acc似乎保持不变当acc达到100%时,值不会增加。 我只有很少的数据(1500个数据,948个验证数据)。 有没有解决这个问题的方法?

1 个答案:

答案 0 :(得分:2)

这是一个明显的过度装备。训练集是完美学习的,但模型不适用于测试数据。

鉴于您使用了高辍学率,可能是您的数据未在训练集和验证集之间正确分割。您可能在两个数据集中拥有非常不同的数据!

很难帮助您,因为我们对您要预测的内容以及数据集的外观没有任何见解。您的数据集中根本没有很多示例。