Tensorboard的使用
什么是Tensorboard
在训练过程中我们能希望看到训练的过程怎么样,这时候就可以使用这个模块来实现。他可以显示函数之间的变化过程。
Tensorboard的使用
Summarywriter类
add_scalar
这个类的作用是创建训练日志文件。
Summarywriter(“文件地址”)
就可以在目录下生成训练的日志,这个日志可以用来展示成可视化的board
通常使用的是add_scalar()生成绘制的日志。
包含三个参数,tag,y轴,x轴
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter('logs')
#比如绘制一个y=x*x的训练过程
for x in range(10):
writer.add_scalar("y=x*x",x*x,x)
writer.close()
运行之后就会在这里面生成一个logs的日志文件夹和内容
add_image
读取image的一个函数,在这个函数中,他需要这几个参数,tag(str类型),img,需要是Tensor后者np类型的。dataformats指的是图片的通道,H代表高,w代表宽,3就是三通道。默认是3HW,需要根据图片的类型进行设置。
其中img的类型如果是使用PIL打开(Image.open)的就是PIL类型,无法使用add_images函数,需要将其转化为np类型,或者其他支持的类型。
1.将PIL转化为np类型
img_PIL = Image.open("Dataset\\hymenoptera_data\\train\\ants\\0013035.jpg")
img_np = np.array(img_PIL)
writer.add_image('testimg',img_np,1, dataformats= 'HWC')
2.直接使用opencv打开的图片就是np类型
import cv2
img_cv = cv2.imread("Dataset\\hymenoptera_data\\train\\ants\\0013035.jpg")
writer.add_iamge("test", img_cv, 2, dataformts='HWC')
代码及效果为:
from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import numpy as np
import cv2
writer = SummaryWriter('logs')
img_PIL = Image.open("Dataset\\hymenoptera_data\\train\\ants\\0013035.jpg")
img_np = np.array(img_PIL)
img_cv = cv2.imread("Dataset\\hymenoptera_data\\train\\ants\\0013035.jpg")
writer.add_image('testimg',img_cv,2, dataformats= 'HWC')
#比如绘制一个y=x*x的训练过程
for x in range(10):
writer.add_scalar("y=x*x",x*x,x)
writer.close()
绘制board
运行代码后会生成日志文件,在命令行使用命令tensorboard --logdir=目录 --port=端口
端口默认是6006.
如果生成的标签是相同的,再次绘制时就会出现乱图。就是会增加变化过程。建议就是删除所有的日志文件再次运行或者更改标签。