Spaces:
Sleeping
Sleeping
from __future__ import absolute_import | |
from __future__ import division | |
from __future__ import print_function | |
import os | |
import time | |
import torch | |
from utils.io_utils import write_args, save_config_to_yaml | |
class Logger(object): | |
def __init__(self, args): | |
self.args = args | |
self.save_dir = args.save_dir | |
os.makedirs(self.save_dir, exist_ok=True) | |
# save the args and config | |
self.config_dir = os.path.join(self.save_dir, "configs") | |
os.makedirs(self.config_dir, exist_ok=True) | |
file_name = os.path.join(self.config_dir, "args.txt") | |
write_args(args, file_name) | |
log_dir = os.path.join(self.save_dir, "logs") | |
if not os.path.exists(log_dir): | |
os.makedirs(log_dir, exist_ok=True) | |
self.text_writer = open(os.path.join(log_dir, "log.txt"), "a") # 'w') | |
if args.tensorboard: | |
self.log_info("using tensorboard") | |
self.tb_writer = torch.utils.tensorboard.SummaryWriter( | |
log_dir=log_dir | |
) # tensorboard.SummaryWriter(log_dir=log_dir) | |
else: | |
self.tb_writer = None | |
def save_config(self, config): | |
save_config_to_yaml(config, os.path.join(self.config_dir, "config.yaml")) | |
def log_info(self, info, check_primary=True): | |
print(info) | |
info = str(info) | |
time_str = time.strftime("%Y-%m-%d-%H-%M") | |
info = "{}: {}".format(time_str, info) | |
if not info.endswith("\n"): | |
info += "\n" | |
self.text_writer.write(info) | |
self.text_writer.flush() | |
def add_scalar(self, **kargs): | |
"""Log a scalar variable.""" | |
if self.tb_writer is not None: | |
self.tb_writer.add_scalar(**kargs) | |
def add_scalars(self, **kargs): | |
"""Log a scalar variable.""" | |
if self.tb_writer is not None: | |
self.tb_writer.add_scalars(**kargs) | |
def add_image(self, **kargs): | |
"""Log a scalar variable.""" | |
if self.tb_writer is not None: | |
self.tb_writer.add_image(**kargs) | |
def add_images(self, **kargs): | |
"""Log a scalar variable.""" | |
if self.tb_writer is not None: | |
self.tb_writer.add_images(**kargs) | |
def close(self): | |
self.text_writer.close() | |
self.tb_writer.close() | |