sys.stdout打印和保存信息
import os
import sys
class Logger():
def __init__(self
, filename
="log.txt"):
self
.terminal
= sys
.stdout
self
.log
= open(filename
, "w")
def write(self
, message
):
self
.terminal
.write
(message
)
self
.log
.write
(message
)
def flush(self
):
pass
sys
.stdout
= Logger
()
print("kzx")
Logging
import logging
def get_logger(LEVEL
, log_file
= None):
head
= '[%(asctime)-15s] [%(levelname)s] %(message)s'
if LEVEL
== 'info':
logging
.basicConfig
(level
=logging
.INFO
, format=head
)
elif LEVEL
== 'debug':
logging
.basicConfig
(level
=logging
.DEBUG
, format=head
)
logger
= logging
.getLogger
()
if log_file
!= None:
fh
= logging
.FileHandler
(log_file
)
logger
.addHandler
(fh
)
return logger
logger
= get_logger
('info')
logger
.info
('kzx')
TensorboardX
首先安装
pip install tensorboardX
使用时,需要创建SummaryWriter对象,有三种方法:
from tensorboardX
import SummaryWriter
writer1
= SummaryWriter
('runs/exp')
writer2
= SummaryWriter
()
writer3
= SummaryWriter
(comment
='_resnet')
有了 writer 我们就可以往日志里写入数字、图片、甚至声音等数据。
数字的写入
add_scalar
(tag
, scalar_value
, global_step
=None, walltime
=None)
tag (string): 数据名称,不同名称的数据使用不同曲线展示scalar_value (float): 数字常量值global_step (int, optional): 训练的 stepwalltime (float, optional): 记录发生的时间,默认为 time.time()
例如:
from tensorboardX
import SummaryWriter
writer
= SummaryWriter
('runs/scalar_example')
for i
in range(10):
writer
.add_scalar
('quadratic', i
**2, global_step
=i
)
writer
.add_scalar
('exponential', 2**i
, global_step
=i
)
writer
.close
()
在 cmd 中使用如下命令:
tensorboard
--logdir=runs
/scalar_example
--port=8088
输入显示的网页
图片记录
add_image
(tag
, img_tensor
, global_step=None
, walltime=None
, dataformats=
'CHW')
tag (string):数据名称img_tensor (torch.Tensor / numpy.array):图像数据global_step (int, optional):训练的 stepwalltime (float, optional):记录发生的时间,默认为 time.time()dataformats (string, optional):图像数据的格式,默认为 ‘CHW’,即 Channel x Height x Width,还可以是 ‘CHW’、‘HWC’ 或 ‘HW’ 等
我们一般会使用 add_image 来实时观察生成式模型的生成效果,或者可视化分割、目标检测的结果,帮助调试模型。
from tensorboardX
import SummaryWriter
from urllib
.request
import urlretrieve
import cv2
writer
= SummaryWriter
('runs/image_example')
for i
in range(1, 4):
writer
.add_image
('UNet_Seg',
cv2
.cvtColor
(cv2
.imread
('{}.jpg'.format(i
)), cv2
.COLOR_BGR2RGB
),
global_step
=i
,
dataformats
='HWC')
writer
.close
()