def save_checkpoint(info, model, optim, dir_logs, save_all_from=None, is_best=True): os.system('mkdir -p ' + dir_logs) if save_all_from is None: path_ckpt_info = os.path.join(dir_logs, 'ckpt_info.pth.tar') path_ckpt_model = os.path.join(dir_logs, 'ckpt_model.h5') path_ckpt_optim = os.path.join(dir_logs, 'ckpt_optim.pth.tar') path_best_info = os.path.join(dir_logs, 'best_info.pth.tar') path_best_model = os.path.join(dir_logs, 'best_model.h5') path_best_optim = os.path.join(dir_logs, 'best_optim.pth.tar') # save info & logger path_logger = os.path.join(dir_logs, 'logger.json') info['exp_logger'].to_json(path_logger) torch.save(info, path_ckpt_info) if is_best: shutil.copyfile(path_ckpt_info, path_best_info) # save model state & optim state network.save_net(path_ckpt_model, model) torch.save(optim, path_ckpt_optim) if is_best: shutil.copyfile(path_ckpt_model, path_best_model) shutil.copyfile(path_ckpt_optim, path_best_optim) elif info['epoch'] >= save_all_from: is_best = False # because we don't know the test accuracy path_ckpt_info = os.path.join(dir_logs, 'ckpt_epoch,{}_info.pth.tar') path_ckpt_model = os.path.join(dir_logs, 'ckpt_epoch,{}_model.h5') path_ckpt_optim = os.path.join(dir_logs, 'ckpt_epoch,{}_optim.pth.tar') # save info & logger path_logger = os.path.join(dir_logs, 'logger.json') info['exp_logger'].to_json(path_logger) torch.save(info, path_ckpt_info.format(info['epoch'])) network.save_net(path_ckpt_model.format(info['epoch']), model) torch.save(optim, path_ckpt_optim.format(info['epoch']))
def save_checkpoint(filename, model, epoch, is_best): model_name = '{}_epoch_{}.h5'.format(filename, epoch) model_name_best = '{}_best.h5'.format(filename) info_name = '{}_epoch_{}_info.json'.format(filename, epoch) info_name_best = '{}_best_info.json'.format(filename) network.save_net(model_name, model) with open(info_name, 'w') as f: json.dump(model.opts, f) print('save model: {}'.format(model_name)) if is_best: shutil.copyfile(model_name, model_name_best) shutil.copyfile(info_name, info_name_best)