尽管有相同的数据集,但训练期间training_acc和验证acc之间存在差异

时间:2019-01-30 08:22:14

标签: python keras deep-learning

我的验证数据集是我的训练数据集的精确副本。但是,在训练期间,每个时期结束时, 我的训练准确度是99.5左右(所有批次的平均值),我的验证结果是96.7左右。如果更改优化器,我会发现差距可能更大。

我的全数据集只有4000张图像。 在训练我的batch size is 50steps_per_epoch is 100期间, 因此模型应该在5000 images附近看到。

如果数据集相同,为什么训练和验证准确性之间会有如此巨大的差异?

这是我适合模特的方式:

r_optimizer = optimizers.Adagrad(lr=0.001, epsilon=None, decay=0.0) 
r_batch_size = 50
r_epochs = 5
r_steps_per_epoch = 80




MODEL.optimizer = r_optimizer
  MODEL.compile(optimizer= r_optimizer,
              loss='categorical_crossentropy',
              metrics = ['accuracy'])




history = MODEL.fit_generator(
         train_gen,
        steps_per_epoch = r_steps_per_epoch,
        epochs = r_epochs,
        validation_data=valid_gen,
        validation_steps= np.ceil(len(valid_gen.filenames)/r_batch_size),
        callbacks = callbacks,
        shuffle= True,
        verbose =2 )

我正在通过迁移学习使用xception,并添加了以下几层:

132 : global_average_pooling2d_1
133 : dense_1
134 : dropout_1
135 : dense_2
136 : dense_3

通过复制权重并创建一个新模型将出站设置为0(以前仅为0.20

0 个答案:

没有答案