in recipes/local_prior_match/src/runtime/Logging.cpp [120:146]
void LogHelper::logAndSaveModel(
SSLTrainMeters& meters,
const std::unordered_map<std::string, std::string>& config,
std::shared_ptr<fl::Module> network,
std::shared_ptr<SequenceCriterion> criterion,
std::shared_ptr<fl::FirstOrderOptimizer> netoptim,
const std::unordered_map<std::string, double>& logFields) {
int iter = logOnEpoch_ ? std::stoi(config.at(kEpoch))
: std::stoi(config.at(kIteration));
std::string tag = "last";
if (FLAGS_itersave) {
tag = logOnEpoch_ ? format("epoch_%04d", iter) : format("iter_%08d", iter);
}
logStatus(meters, iter, logFields);
saveModel("model_" + tag + ".bin", config, network, criterion, netoptim);
for (auto& s : meters.valid) {
double verr = s.second.edits[kTarget].value()[0];
auto sit = validminerrs_.find(s.first);
if (sit == validminerrs_.end() || sit->second > verr) {
validminerrs_[s.first] = verr;
saveModel(
"model_" + s.first + ".bin", config, network, criterion, netoptim);
}
}
}