我的验证数据集是我的训练数据集的精确副本。但是,在训练期间,每个时期结束时, 我的训练准确度是99.5左右(所有批次的平均值),我的验证结果是96.7左右。如果更改优化器,我会发现差距可能更大。
我的全数据集只有4000张图像。
在训练我的batch size is 50
和steps_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