我的代码:
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'])
我已尝试使用图像生成器进行数据论证,添加dropout(0.5),在FC图层后添加BN,但val_loss
正在增加,而损失会下降,cal_acc
似乎保持不变当acc达到100%时,值不会增加。
我只有很少的数据(1500个数据,948个验证数据)。
有没有解决这个问题的方法?
答案 0 :(得分:2)
这是一个明显的过度装备。训练集是完美学习的,但模型不适用于测试数据。
鉴于您使用了高辍学率,可能是您的数据未在训练集和验证集之间正确分割。您可能在两个数据集中拥有非常不同的数据!
很难帮助您,因为我们对您要预测的内容以及数据集的外观没有任何见解。您的数据集中根本没有很多示例。