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



我有一个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])

因此,epoch的每次迭代,具有最高val_acc的epoch都将保存到.hdf5文件中。我的问题是,这是一个好的做法吗?或者这是编码CNN的好方法吗?我的意思是,即使历元没有完成,产生最高val_acc的历元也将是唯一保存的历元,并且忽略其他具有较低val_acc的迭代。我对CNN有点陌生,所以我想尽可能多地了解我,以便能够获得一个好的CNN。

验证准确性的目的是估计您的模型如何在看不见的数据上进行泛化。因此,当你以最佳的验证准确性保存检查点时,你会节省最能预测看不见数据结果的权重(通过训练学到的权重(。因此,通过保存多个检查点,您可以在使用测试数据(可以取自实时用例(测试模型时使用这些检查点,并选择与测试数据配合良好的模型

希望这能帮助

最新更新