使用模型检查点是个好主意吗?

时间:2019-11-01 08:04:04

标签: python tensorflow keras

我有一个CNN代码,该代码可确定图像是否包含暴力,毒品,恐怖或色情内容。我目前处于训练CNN的阶段,并尝试不同的配置以找到CNN的最佳准确性。通过这次培训,我实现了from keras.callbacks import ModelCheckpoint来在培训时利用检查点。我使用这样的回调:

checkpoint = ModelCheckpoint(WEIGHTS_PATH, monitor='val_acc', verbose=1, save_best_only=True, mode='max')
model.fit_generator(training_set,
                    steps_per_epoch=3000,
                    epochs = 10,
                    validation_data = test_set,
                    validation_steps = 300,
                    callbacks = [checkpoint])

因此,每个时代的迭代,具有最高val_acc的时代将被保存到.hdf5文件中。我的问题是,这是一种好习惯吗?还是这是编码CNN的好方法?我的意思是,即使时代没有结束,保存最高val_acc的时代也将是唯一保存的时代,而其他每次使用val_acc更低的迭代都将被忽略。我对CNN有点陌生,所以我想尽可能多地了解自己能够取得良好的CNN。

1 个答案:

答案 0 :(得分:0)

验证准确性的目的是为了评估模型如何针对看不见的数据进行概括。因此,当您以最佳的验证准确性保存检查点时,会发生的事情是节省权重(通过训练获得的权重),以最有效地预测看不见的数据的结果。因此,通过保存多个检查点,您可以在使用测试数据测试模型时利用这些检查点(可以从实时用例中获取),并选择与您的测试数据相匹配的模型

希望这会有所帮助