目录
add_scalar()函数
add_image()函数
Tensorboard是常用的一种可视化的工具,我们对其中的SummaryWriter类进行调用。
我们可以查阅其相关说明:
我们通常使用初始化函数中的第一个参数:文件的名称,也可以不对其进行配置,采用默认。
使用其中的add_scalar函数,首先查阅说明:
tag相当于图像的标题; scalar_value是要保存的数值,相当于纵轴;global_step是在多少步记录scalar_value的值,相当于横轴。
一个小实例:
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter("logs")#创建一个对象
for i in range(100):
writer.add_scalar("y=2x",2*i,i)
writer.close()
运行完之后,在左侧会出现一个logs文件夹,其中就是Tensorboard的事件文件。
可以在命令行中输入指令tensorboard --logdir=logs来打开该文件:
其中logdir=事件文件所在文件夹名。由运行结果可以看到Tensorboard打开的窗口在主机的6006号。点击就可以看到可视化的结果:
若同时有好几个训练,都默认打开6006端口,会出现混乱,可以使用:
tensorboard --logdir=logs --port=6007
如果我们接着改变了函数,但对tag参数没有改变:
writer.add_scalar("y=2x",3*i,i)
重新运行代码后,打开TensorBoard刷新会发现:
我们可以将事件文件都删掉重新运行,实现新函数的显示。
使用其中的add_image()函数,首先查阅说明:
tag是标题;img_tensor是图像数据,要注意其类型,参数应符合类型要求;global_step是训练步骤;dataformats是格式设置。
在这里我们将照片添加到项目目录中,并查看照片的格式:
可以知道,照片格式PIL.JpegImage并不满足参数的格式要求,需要进行转换。如果我们转换为numpy的array形式,则其shape为HWC(H:高度 W:宽度 C:通道):
而我们查阅的add_image()函数相关信息可知,img_tensor默认是CHW,所以需要对dataformats操作。
from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import numpy as np
writer = SummaryWriter("logs")#创建一个对象
image_path = "data/train/ants_image/0013035.jpg"#图片的相对路径
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)#将图像转换为numpy的array类型
writer.add_image("title",img_array,1,dataformats='HWC')#可以通过查阅所得的例子中知道HWC的配置
for i in range(10):
writer.add_scalar("y=x^2",i**2,2*i)
writer.close()
然后从前面说的命令行进行查看:
接着将路径改为另一个图片的路径,将步骤step改为2:
接着运行,在TensorBoard刷新进行查看:
箭头处可以拖动,查看step1。通过改变title可以实现单独显示。