python - 使用预训练模型 inception_v3,val_loss 增加,而 val_acc 保持在 60%

标签 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个验证数据)。 有没有办法解决这样的问题?

最佳答案

这是明显的过度拟合。训练集已经完美学习,但模型不适用于测试数据。

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

很难为您提供帮助,因为我们不了解您想要预测的内容以及数据集的外观。您的数据集中根本没有太多示例。

关于python - 使用预训练模型 inception_v3,val_loss 增加,而 val_acc 保持在 60%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44129726/

相关文章:

python - 是 tcmalloc : large alloc a warning or error in Python

python - 你如何在 python 中重载插入符号 (^) 运算符

python - seq2seq 预测下一个时间步

machine-learning - 具有对数和指数激活函数的卷积神经网络

python - 作为 Keras lambda 层进行图像预处理与单独进行预处理

python - Tkinter Canvas 和滚动条

python - Pandas 数据框按列表分组

Python:为什么 2D 列表理解需要在内循环之前先外循环?

python - 导入错误: cannot import name 'MaxPooling2D'

tensorflow - 从 Keras 层获取权重