Tensorboard是tensorflow内置的一个可视化工具,它通过将tensorflow程序输出的日志文件的信息可视化使得tensorflow程序的理解、调试和优化更加简单高效。Tensorboard的可视化依赖于tensorflow程序运行输出的日志文件,因而tensorboard和tensorflow程序在不同的进程中运行。
打开Pycharm,设置环境
安装tensorboard
SummaryWriter()
SummaryWriter 创建一个tensorboard文件, 文件保存在log_dir 目录(自己指定的目录)写文件,该文件可以被tensorboard解析
参数:
log_dir
: 保存目录位置。 默认值为 run/CURRENT_DATETIME_HOSTNAME ,每次运行后都会更改。
使用分层文件夹结构可以轻松比较运行情况。 例如 为每个新实验传递“ runs / exp1”,“ runs / exp2”等,以便在它们之间进行比较。
flush_secs
: 表示写入tensorboard文件的时间间隔
调用方式如下:
writer = SummaryWriter(log_dir='logs',flush_secs=60)
writer.add_graph()
这个函数用于在tensorboard中创建Graphs,Graphs中存放了网络结构,其中常用参数有:
model:pytorch模型
input_to_model:pytorch模型的输入
writer.add_scalar()
这个函数用于在tensorboard中加入loss,其中常用参数有:
tag:标签,如下图所示的Train_loss
scalar_value:标签的值
global_step:标签的x轴坐标
writer.add_scalar('Train_loss', loss, (epoch*epoch_size + iteration))
tensorboard --logdir=
在完成tensorboard的logs文件的生成后,可在命令行调用该文件,tensorboard网址。
具体代码如下(版本不同,命令会有差异):
tensorboard --logdir=logs
tensorboard --logdir="logs"
tensorboard --logdir "log"
也可指定端口名(一台服务器可能多个人在一起训练,同时使用一个端口可能冲突):
tensorboard --logdir=logs --port=6007
在完成tensorboard文件的生成后,可在命令行调用该文件,tensorboard网址。
具体代码如下:
这一步出现错误可以参考:【解决方案汇总】No dashboards are active for the current data set. Probable causes_别下完这场雪-CSDN博客
代码示例:
"""
SummaryWriter 创建一个tensorboard文件, 文件保存在log_dir 目录写文件,该文件可以被tensorboard解析
参数:
log_dir: 保存目录位置。 默认值为 run/CURRENT_DATETIME_HOSTNAME ,每次运行后都会更改。
使用分层文件夹结构可以轻松比较运行情况。 例如 为每个新实验传递“ runs / exp1”,“ runs / exp2”等,以便在它们之间进行比较。
flush_secs: 表示写入tensorboard文件的时间间隔
"""
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter("logs") # 创建SummaryWriter() 类实例,将对应的事件文件存储到 logs 文件中
# writer.add_image()
"""
add_scalar(): 将数添加到summary中
参数:
tag: 图标的标题
scalar_value: 需要保存的数值,对应y轴
global_step: 训练到多少步的时候对应的数值是多少,对应x轴
"""
for i in range(100):
writer.add_scalar("y = x", i, i) # 添加标量,即数
writer.close()
安装open-cv包:pip install opencv-python
绘制图片,可用于检查模型的输入,监测 feature map 的变化,或是观察 weight。
参数:
tag: 就是保存图的名称
img_tensor:图片的类型要是torch.Tensor, numpy.array, or string这三种
golbal_step:第几张图片
dataformats=‘CHW’,默认CHW,tensor是CHW,numpy是HWC,C:channel H:high W:weight. 从PIL到numpy,
需要在add_image()中指定shape中每一个数字/维度的含义
从PIL到numpy,需要在add_image()中指定shape中每一个数字/维度的含义
from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import numpy as np
writer = SummaryWriter("logs") # 创建SummaryWriter() 类实例,将对应的事件文件存储到 logs 文件中
image_path = "dataset/train/ants_image/0013035.jpg"
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)
print(type(img_array))
print(img_array.shape)
"""
add_image(): 绘制图片,可用于检查模型的输入,监测 feature map 的变化,或是观察 weight。
参数:
tag: 就是保存图的名称
img_tensor:图片的类型要是torch.Tensor, numpy.array, or string这三种
golbal_step:第几张图片
dataformats=‘CHW’,默认CHW,tensor是CHW,numpy是HWC,C:channel H:high W:weight.
"""
writer.add_image("test", img_array, 1, dataformats='HWC') # 不指定 dataformats='HWC' 会出现错误
writer.close()
执行上面的语句,在控制台输入 tensorboard --logdir=logs
进入网站,点击Images: