示例#1
0
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']))
示例#2
0
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)