本文已参与「新人创作礼」活动,一起开启掘金创作之路。
写在前面
进行深度学习时,需要记录一些数据指标。常用的是tensorboard,但是在学习被终止时,下次接着训练,就会产生一个新的文件,不会在上个文件接着存储。那么此时可以用一个txt文件把训练的日志保存。该文章主要介绍如何使用logging产生txt日志和使用tensorboard产生日志
1. logging日志记录
代码
import logging
class mylog():
def __init__(self,filename="WDNet",path="../checkpoints"):
logger = logging.getLogger(filename)
logger.setLevel(logging.INFO)
formatter = logging.Formatter("")
run_log = logging.FileHandler("{}/logs.txt".format(path),"a",encoding="utf-8")
run_log.setLevel(logging.INFO)
run_log.setFormatter(formatter)
logger.addHandler(run_log)
self.logger = logger
if __name__ == '__main__':
log = mylog(filename="WDNet",path="../checkpoints")
for i in range(10):
log.logger.info("123")
效果
生成了log.txt日志
-
这里设置的日志等级为INFO等级,日志等级排序DEBUG>INFO>WARNNING>ERROR>CRITICAL,因为该项目主要记录一些指标信息,所以只设置为INFO即可。
-
logging.Formatter("")这里可以填入格式化信息,比如
formatter = logging.Formatter("时间:%(asctime)s - 日志等级:%(levelname)s - 日志信息:%(message)s")
就可以格式化得到这样的信息。
注意在传入路径的时候要注意
之前root这个地方写为“..”,在调用函数进行训练时候,一直没有保存。最后发现,这里应该是“.”,因为我的train文件和checkpoints文件夹在通一个父目录下,隶属同一级,所以关系是“.”
2. Tensorboard日志记录
Tensorboard可以让传入数据,然后自动的可视化出来,很方便。
代码
from tensorboardX import SummaryWriter
import os
class logWriter(object):
def __init__(self, logdir="checkpoints/logs"):
"""Tensorboard日志记录
:param logdir: 日志保存文件夹
"""
super().__init__()
if not os.path.exists(logdir):
os.makedirs(logdir)
self.writer = SummaryWriter(logdir)
def record(self, loss_item: dict, step: int):
"""
:param loss_item: 损失包装的字典
:param step: 训练的步数
"""
for key,value in loss_item.items():
self.writer.add_scalar(tag=key,scalar_value=value,global_step=step)
这样可以方便我们以字典的形式传入
self.writer = logWriter(logdir)
self.writer.record(
loss_item={
"train/G-Loss": G_loss.item(),
"train/D-Loss": D_loss.item(),
"train/Watermark-Loss": w_loss.item(),
"train/Alpha-Loss": alpha_loss.item(),
"train/Mask-Loss": mask_loss.item(),
"train/I-watermark-Loss-Stage1": I_watermark_loss.item(),
"train/I-watermark-Loss-Stage2": I_watermark2_loss.item(),
"train/Vgg-Loss": vgg_loss.item()
}, step=self.global_step
)
在使用的时候,需要再命令行输入
1. 打开命令行或者终端
2. activate 你的环境 (linux环境下,要source activate 你的环境)
3. tensorboard --logdir=你的日志生成的目录(具体到目录即可,无需加入日志的名称)
效果
这里可以直接将指标可视化出来。