安装包:
conda install tensorboardTensorboard 官方文档:https://tensorflow.google.cn/tensorboard/get_started?authuser=0
写入标量
from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter("logs") # 写入的 log 文件路径# 函数 y = 2 * xfor i in range(100):# 添加标量数据,tag 对应标题,scalar_value 对应 y 轴,global_step 对应 x 轴writer.add_scalar("y=2x", 2 * i, i)writer.close()
- 运行上面代码后,会在
"./logs"路径下保存 log 文件 - 在虚拟环境中执行命令:
tensorboard --logdir=logs --port=6007

- 进入 tensorboard 页面

注意:如果修改了代码,但没有修改标题
- eg.
writer.add_scalar("y=2x", 3 * i, i),改成了 y = 3 x,但是标题仍为"y=2x",那么刷新 tensorboard 页面后发现图像出现了重叠(好保留了原来 y = 2 x 的曲线) - 解决办法:
- 删除 ‘./logs’ 文件夹下的旧数据,再刷新 tensorboard 页面
- 或者,修改标题
写入图像
from torch.utils.tensorboard import SummaryWriterimport numpy as npfrom PIL import Imagewriter = SummaryWriter("logs") # 写入的 log 文件路径image_path = "./data/dataset/train/ants_image/24335309_c5ea483bb8.jpg"img = Image.open(image_path)print(type(img)) # <class 'PIL.JpegImagePlugin.JpegImageFile'>,不是 tensor or numpy 格式的img_array = np.array(img) # 转化为 numpyprint(type(img_array)) # <class 'numpy.ndarray'>print(img_array.shape) # [H, W, C] = (375, 500, 3)# 添加图像数据,tag 对应标题,img_tensor 对应图像 tensor or numpy 且要求 shape = [C, H, W]# 由于 PIL 直接转换成 numpy 后是 HWC 格式,所以需加上 dataformats="HWC"writer.add_image("train", img_array, step=1, dataformats="HWC")# 可以改用 opencv 的包,import cv2,cv_img = cv2.imread(img_path) 读出来就是 numpy 格式writer.close()
上面是 step1 的输出,下面修改图像作为 step2 的输出
writer = SummaryWriter("logs")image_path = "./data/dataset/train/bees_image/476347960_52edd72b06.jpg"img = Image.open(image_path)writer.add_image("train", img_array, 2, dataformats="HWC")writer.close()
Tensorboard 查看时注意顶部切换到 IMAGE 这一栏

写入网络结构
input = torch.ones((64, 3, 32, 32))writer = SummaryWriter("../logs_seq")writer.add_graph(myNet, input)writer.close()
