【学习笔记】【Pytorch】二、TensorBoard的使用

【学习笔记】【Pytorch】二、TensorBoard的使用

  • 学习地址
  • 主要内容
    • 一、TensorBoard的安装
    • 二、SummaryWriter类的使用
      • add_scalar()
        • 1.代码实现
        • 2.参数说明
        • 3.TensorBoard
      • add_image()
        • 1.代码实现
        • 2.参数说明
        • 3.TensorBoard

学习地址

PyTorch深度学习快速入门教程【小土堆】.

主要内容

一、TensorBoard的安装
作用:在浏览器中打开TensorBoard生成的事件。
二、SummaryWriter类的使用

  • add_scalar()
    作用:常用来绘制train/val loss,观察训练过程中loss的变化,判断模型的好坏。
  • add_image()
    作用:常用来观察训练结果。

一、TensorBoard的安装

conda install tensorboard

作用:在浏览器中打开TensorBoard生成的事件。

二、SummaryWriter类的使用

from torch.utils.tensorboard import SummaryWriter

add_scalar()

注:add就是表示其的作用就是增加,并不能覆盖。

1.代码实现

from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs")  # 指定在 logs 文件夹内生成事件

# y = 2x
for i in range(100):
    writer.add_scalar("y=2x", 2*i, i)

writer.close()

输出:在当前目录下生成一个logs文件夹,里面存放事件“y=2x”的函数
【学习笔记】【Pytorch】二、TensorBoard的使用_第1张图片

2.参数说明

函数原型:

def add_scalar(
    self,
    tag,
    scalar_value,
    global_step=None,
    walltime=None,
    new_style=False,
    double_precision=False,
):
  • tag:事件名称
  • scalar_value:y轴
  • global_step:x轴

【学习笔记】【Pytorch】二、TensorBoard的使用_第2张图片

3.TensorBoard

打开tensorboard事件:在命令行输入以下命令

tensorboard --logdir=logs --port=6007

tensorboard命令参数说明

  • –logdir=事件文件所在文件夹名(可以使用绝对路径);
  • –port=6007 在服务器上,为防止多人使用同一端口,被占用,可以进行指定端口,也可以不指定。

【学习笔记】【Pytorch】二、TensorBoard的使用_第3张图片
在浏览器中打开网址可以查看y=2x图表。
【学习笔记】【Pytorch】二、TensorBoard的使用_第4张图片
事件不覆盖的解决方法
问题描述:
同一个事件使用两种不同图像函数(即上次训练运行的事件名称的图像函数没有删除,下次训练还运行同一名称的事件,但是图像函数不一样了,不会发生覆盖,并进行拟合)。例如,执行以下代码:
【学习笔记】【Pytorch】二、TensorBoard的使用_第5张图片
查看图表:
【学习笔记】【Pytorch】二、TensorBoard的使用_第6张图片
解决方法:

  • 1.在logs文件夹删除上次的事件。
  • 2.新建一个新的事件名称。

add_image()

1.代码实现

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image

# 重复代码1(“test”事件,步骤1)
writer = SummaryWriter("logs")
image_path = "data/train/ants_image/0013035.jpg"
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)  # 对PIL图片进行转换,add_image()不支持PIL类型

print(type(img_array))
print(img_array.shape)

writer.add_image("test", img_array, 1, dataformats="HWC")
writer.close()

# 重复代码2(“test”事件事件,步骤2)
writer = SummaryWriter("logs")
image_path = "data/train/bees_image/16838648_415acd9e3f.jpg"
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)  # 对PIL图片进行转换,add_image()不支持PIL类型
print(type(img_array))
print(img_array.shape)

writer.add_image("test", img_array, 2, dataformats="HWC")
writer.close()

# 重复代码3(“train”事件事件,步骤1)
writer = SummaryWriter("logs")
image_path = "data/train/bees_image/39747887_42df2855ee.jpg"
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)  # 对PIL图片进行转换,add_image()不支持PIL类型
print(type(img_array))
print(img_array.shape)

writer.add_image("train", img_array, 1, dataformats="HWC")
writer.close()

2.参数说明

函数原型:

def add_image(
        self, tag, img_tensor, global_step=None, walltime=None, dataformats="CHW"
    ):
  • tag:事件名称
  • img_tensor:图片的类型要是torch.Tensor, numpy.array, or string这三种
  • global_step:第几张图片
  • dataformats=‘CHW’,默认CHW。tensor是CHW,numpy是HWC(H表示高度height,W表示宽度weight,C表示通道channel)
    【学习笔记】【Pytorch】二、TensorBoard的使用_第7张图片

3.TensorBoard

TensorBoard输出:
【学习笔记】【Pytorch】二、TensorBoard的使用_第8张图片

你可能感兴趣的:(Pytorch,pytorch,学习,深度学习)