There used to be just one saver, SaveScheduler, with a SaveSchedule
enum to decide the saving schedule. The problem with this approach is
that the information that SaveScheduler had to keep track of increased
with each new SaveSchedule.
This change defines a Save trait and splits the different schedules
into separate saver data types that each implement the Save trait.
Additionally, the BestEpochSaver schedule is added that only saves the
model for an epoch when the model has improved over all previous
epochs.
Fixes #65.
For now, I have left the pretrain schedule the same (though I still have to test it). I will later add a schedule that can be added to pretrain for only saving improved (on the validation data) batches.
There used to be just one saver,
SaveScheduler
, with aSaveSchedule
enum to decide the saving schedule. The problem with this approach is that the information thatSaveScheduler
had to keep track of increased with each newSaveSchedule
.This change defines a
Save
trait and splits the different schedules into separate saver data types that each implement theSave
trait. Additionally, theBestEpochSaver
schedule is added that only saves the model for an epoch when the model has improved over all previous epochs.Fixes #65.
For now, I have left the pretrain schedule the same (though I still have to test it). I will later add a schedule that can be added to pretrain for only saving improved (on the validation data) batches.