- 学习地址
- 主要内容
- 一、TensorBoard的安装
- 二、SummaryWriter类的使用
- add_scalar()
- 1.代码实现
- 2.参数说明
- 3.TensorBoard
- add_image()
- 1.代码实现
- 2.参数说明
- 3.TensorBoard
主要内容
一、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”的函数
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轴
3.TensorBoard
打开tensorboard事件:在命令行输入以下命令
tensorboard --logdir=logs --port=6007
tensorboard命令参数说明:
- –logdir=事件文件所在文件夹名(可以使用绝对路径);
- –port=6007 在服务器上,为防止多人使用同一端口,被占用,可以进行指定端口,也可以不指定。
在浏览器中打开网址可以查看y=2x图表。
事件不覆盖的解决方法:
问题描述:
同一个事件使用两种不同图像函数(即上次训练运行的事件名称的图像函数没有删除,下次训练还运行同一名称的事件,但是图像函数不一样了,不会发生覆盖,并进行拟合)。例如,执行以下代码:
查看图表:
解决方法:
- 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)
3.TensorBoard
TensorBoard输出: