安装包:conda install tensorboard Tensorboard 官方文档:https://tensorflow.google.cn/tensorboard/get_started?authuser=0

写入标量

  1. from torch.utils.tensorboard import SummaryWriter
  2. writer = SummaryWriter("logs") # 写入的 log 文件路径
  3. # 函数 y = 2 * x
  4. for i in range(100):
  5. # 添加标量数据,tag 对应标题,scalar_value 对应 y 轴,global_step 对应 x 轴
  6. writer.add_scalar("y=2x", 2 * i, i)
  7. writer.close()
  1. 运行上面代码后,会在 "./logs" 路径下保存 log 文件
  2. 在虚拟环境中执行命令:tensorboard --logdir=logs --port=6007

image.png

  1. 进入 tensorboard 页面

image.png

注意:如果修改了代码,但没有修改标题

  • eg. writer.add_scalar("y=2x", 3 * i, i),改成了 y = 3 x,但是标题仍为 "y=2x",那么刷新 tensorboard 页面后发现图像出现了重叠(好保留了原来 y = 2 x 的曲线)
  • 解决办法:
    • 删除 ‘./logs’ 文件夹下的旧数据,再刷新 tensorboard 页面
    • 或者,修改标题

写入图像

  1. from torch.utils.tensorboard import SummaryWriter
  2. import numpy as np
  3. from PIL import Image
  4. writer = SummaryWriter("logs") # 写入的 log 文件路径
  5. image_path = "./data/dataset/train/ants_image/24335309_c5ea483bb8.jpg"
  6. img = Image.open(image_path)
  7. print(type(img)) # <class 'PIL.JpegImagePlugin.JpegImageFile'>,不是 tensor or numpy 格式的
  8. img_array = np.array(img) # 转化为 numpy
  9. print(type(img_array)) # <class 'numpy.ndarray'>
  10. print(img_array.shape) # [H, W, C] = (375, 500, 3)
  11. # 添加图像数据,tag 对应标题,img_tensor 对应图像 tensor or numpy 且要求 shape = [C, H, W]
  12. # 由于 PIL 直接转换成 numpy 后是 HWC 格式,所以需加上 dataformats="HWC"
  13. writer.add_image("train", img_array, step=1, dataformats="HWC")
  14. # 可以改用 opencv 的包,import cv2,cv_img = cv2.imread(img_path) 读出来就是 numpy 格式
  15. writer.close()

上面是 step1 的输出,下面修改图像作为 step2 的输出

  1. writer = SummaryWriter("logs")
  2. image_path = "./data/dataset/train/bees_image/476347960_52edd72b06.jpg"
  3. img = Image.open(image_path)
  4. writer.add_image("train", img_array, 2, dataformats="HWC")
  5. writer.close()

Tensorboard 查看时注意顶部切换到 IMAGE 这一栏
image.pngimage.png

写入网络结构

  1. input = torch.ones((64, 3, 32, 32))
  2. writer = SummaryWriter("../logs_seq")
  3. writer.add_graph(myNet, input)
  4. writer.close()