TensorBoard:对图像进行变换
1. SummaryWriter的使用
ctrl类出现注释解析:
将条目直接log_dir写入要成为由TensorBoard使用。
“摘要编写器”类提供了一个高级 API 来创建事件文件,并在给定目录中添加摘要和事件。该类更新文件内容异步。这允许训练程序调用方法直接从训练循环向文件添加数据,而不会减慢速度训练。
# 创建实例
writer = SummaryWriter("logs")# writer.add_image()
# 绘制 y = x
for i in range(100):# scalar_value---x轴, global_step---y轴writer.add_scalar("y=x", i, i)writer.close()
缺少tensorboard,进入Anaconda Prompt装包
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorboard
运行成功后目录多了个logs文件
查看logs
logdir=事件文件所在文件夹名
如果是在AnacondaPrompt里,一定要用logs的绝对路径,否则点进入端口会发现没有张量板
其中http://localhost:6006/就是训练端口
也可重新指定端口防止发生冲突
tensorboard --logdir=logs --port=自定义
同理绘制 y=2x
# 绘制 y=2x
for i in range(100):writer.add_scalar("y=2x", 2*i, i)
返回浏览器进行刷新
- 注意:tag要注意不同,如果两个tag相同可能会导致两张图绘制在一起造成歧义
2. add_image()的使用
常用来观察训练结果
def add_image(self, tag, img_tensor, global_step=None, walltime=None, dataformats="CHW"):
#tag:图像名
#img_tensor::图像的数据类型,(torch.Tensor, numpy.ndarray, or string/blobname): Image data
#global_step:训练步骤
#后几个参数不常用
#可以利用Opencv读取图片,获得numpy型图片数据
图像的原始数据类型为PIL.JpegImagePlugin.JpegImageFile
也可以利用numpy.array(),对PIL图片进行转化
将PIL类型的img变量转成numpy型图片数据并赋值给img_array变量
示例代码:
from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image# 创建实例
writer = SummaryWriter("logs")
# img_path = "hymenoptera_data/train/ants_image/0013035.jpg" 查看蚂蚁
img_path = "hymenoptera_data/train/bees_image/16838648_415acd9e3f.jpg"
img_PIL = Image.open(img_path) # 获取的是PIL类型的变量
img_array = np.array(img_PIL)
print(type(img_array))
print(img_array.shape) # 打印img_array的格式 为三通道型
# 根据img_array的类型指定dataformats参数类型
writer.add_image("train", img_array, 1, dataformats='HWC')# # 绘制 y = x
# for i in range(100):
# # tag---图表名称, scalar_value---x轴, global_step---y轴
# writer.add_scalar("y=x", i, i)# 绘制 y=2x
for i in range(100):writer.add_scalar("y=2x", 2*i, i)writer.close()
查看logs文件
进入网址进行刷新
查看蜜蜂只用改动
img_path = "hymenoptera_data/train/bees_image/16838648_415acd9e3f.jpg"
writer.add_image("test", img_array, 2, dataformats='HWC')
不改动tag,会将两张图放在一起,可以通过滑动滑块查看
如果想单独显示只需要改动tag
writer.add_image("train", img_array, 1, dataformats='HWC')