添加日志:
import logging
def get_logger(file_path):
# getLogger返回具有指定 name 的日志记录器,或者当 name 为 None 时返回层级结构中的根日志记录器
logger = logging.getLogger('my_logger')
log_format = '%(asctime)s | %(message)s'
# Formatter实例将使用整个消息的格式字符串以及消息的日期/时间部分的格式字符串进行初始化#eg:07/03 11:52:46 AM
formatter = logging.Formatter(log_format, datefmt='%m/%d %I:%M:%S %p')
# 返回一个 FileHandler 类的新实例。 将打开指定的文件并将其用作日志记录流。
file_handler = logging.FileHandler(file_path)
# .setFormatter将此处理器的Formatter设置为formatter
file_handler.setFormatter(formatter)
# 返回一个新的StreamHandler类
# 可将日志记录输出发送到数据流例如 sys.stdout, sys.stderr 或任何文件类对象
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)
# .addHandler将指定的处理器file_handler添加到此记录器
logger.addHandler(file_handler)
logger.addHandler(stream_handler)
# .setLevel 给记录器设置阈值为 level<INFO> 。日志等级小于 level 会被忽略
logger.setLevel(logging.INFO)
return logger
logger = get_logger("文件名")
# 想要保存的日志内容可按如下格式
logger.info("Logger is set - {} training start".format(testname))
logger.info()中可使用format函数,例如下:
logger.info("epoch: {}/{} step: {}/{} "
"train_loss: {:.5g} "
"train_R2: {:.5g}".format(epoch+1,
epochs,
j+1,
len(trainloader.dataset)//BATCH+1,
loss/BATCH,
r2_score(y.cpu().detach(), y_pre.cpu().detach()))
)
添加tensorboard可视化:
from torch.utils.tensorboard import SummaryWriter
# testname为新创建的文件夹名称(路径)
writer = SummaryWriter(testname)
# 值
writer.add_scalar('train_loss', train_loss, epoch + 1)
writer.add_scalar('train_R2', train_R2, epoch + 1)
实现可视化步骤(进入终端,并进入对应环境):
tensorboard --logdir=路径名
将得到的网站信息在浏览器打开即可
添加整段代码运行时间信息:
import time
time_start = time.time()
#主体代码部分
time_end = time.time()
time_sum = time_end - time_start
logger.info('训练时间 {:.0f}分 {:.0f}秒'.format(time_sum // 60, time_sum % 60))