可以用它生成loss变化、展示transform结果。在pytorch1.1后可以在torch中使用。在探究输出时很有效,比如训练数据集时,可以直观看见中间各步骤的处理结果。
安装tensorboard:pip install tensorboard
#涉及到的类需要import一下
#SummaryWriter类可以在pycharm中用ctrl查看功能和用法
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter("logs")
#在此示例中,主要使用两个方法:
writer.add_image()
writer.add_scalar()
writer.close()
add_scalar()使用
想构造出这种:
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter("logs")
#SummaryWriter功能:添加一个标量数据到summary中,需要添加变量:tag(string)图表标题,双引号
#scalar_value:y轴;global_step:x轴
#尝试一个简单的:y=x,可以用循环来写
for i in range(100):
writer.add_scalar("y=x", i, i)
writer.close()
如何读取logs
在终端,项目目录下,输入tensorboard —logdir=logs,会默认在一个主机端口打开窗口
其中,logdir=(事件文件所在文件夹名)
有时候,服务器端口会冲突,可以指定端口tensorboard —logdir=logs —port=6007
一些问题
不改变标题改变内容时,图表还会记录上一次的数据,并在上一次数据的基础上继续进行这一次的图表生成。
解决(1):删除对应logs下所有文件,程序重新开始
解决(2):训练新回合时写一个新的子文件(即创建新的SummaryWriter(“新文件夹”))
add_image()使用
注意使用函数要求使用的数据类型,其中的图像数据img_tensor要求类型为:torch.Tensor, numpy.array, string/blobname。PIL读取的图像数据不满足需求,此时用OpenCV即可。
import cv2
img_path = '....jpg'
img = cv2.imread(img_path)
(较麻烦)将PIL读取的数据通过numpy转换为array
from PIL import Image
import numpy
img_path = '....jpg'
img = Image.open(img_path)
img_array = np.array(img)
#即可转换为numpy.array类型
from torch.utils.tensorboard import SummaryWriter
import cv2
writer = SummaryWriter("logs")
img_path = '....jpg'
img = cv2.imread(img_path)
writer.add_image("test", img, 1, dataforms = 'HWC')
#此处的“1”是global_step,当有多个时可以通过拖动查看图片,想单独显示就换title
#注意该函数对数据的shape也有要求,默认是(3, H, W),三个通道,高度宽度。使用(H, W, 3)也是
#可以的,但是需要设置dataformats,将默认的CHW改成HWC
#查看数据shape,使用print(img.shape),本次测试数据集使用的是HWC。或者在python控制台也可以看
writer.close()
运行成功后刷新,可以在端口看见有图像内容。add_image功能即为传数据图片