TensorBoard是TensorFlow自带的一个强大的可视化工具,也是一个Web应用程序套件。TensorBoard目前支持7种可视化,Scalars,Images,Audio,Graphs,Distributions,Histograms和Embeddings。其中可视化的主要功能如下。
(1)Scalars:展示训练过程中的准确率、损失值、权重/偏置的变化情况。
(2)Images:展示训练过程中记录的图像。
(3)Audio:展示训练过程中记录的音频。
(4)Graphs:展示模型的数据流图,以及训练在各个设备上消耗的内存和时间。
(5)Distributions:展示训练过程中记录的数据的分部图。
(6)Histograms:展示训练过程中记录的数据的柱状图。
(7)Embeddings:展示词向量后的投影分部。
TensorBoard常用于反映训练过程中的loss变化,探究模型不同阶段如何输出
按ctrl移到函数或类可以显示相应的信息
(1)写如下代码
from torch.utils.tensorboard import SummaryWriter#导入类
writer=SummaryWriter("logs")#类实例化,传入存储事件文件夹的名称
#writer.add_image()
#y=3x
for i in range(100):
writer.add_scalar("y=3x",3*i,i)
writer.close()
(2)运行,会发现根目录下出现logs文件夹即是事件文件的存储文件夹
(3)如何打开事件文件
命令行:terminal
--port指定端口,也可以不指定,--logdir指向存储事件文件的文件夹
tensorboard --logdir=logs --port=6007
我的结果如下:点击连接,即可看到结果
TensorFlow installation not found - running with reduced feature set.
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.8.0 at http://localhost:6007/ (Press CTRL+C to quit)
注:如果出现了下图图像
原因:写入新的事件的时候,图像还记录着上一事件
解决方法:
方法一:将logs所有事件删掉,重新运行,打开事件文件
方法二:新创建一个文件夹logs1,重新类实例化writer=SummaryWriter("logs1")#类实例化
注:可以不看,类SummaryWriter详细信息,仅需知道类实例化时可以传入储存事件文件的文件夹名称
class SummaryWriter(object):
#直接向log_dir写入事件文件,该事件文件可以被tensorBoard进行解析
"""Writes entries directly to event files in the log_dir to be
consumed by TensorBoard.
The `SummaryWriter` class provides a high-level API to create an event file
in a given directory and add summaries and events to it. The class updates the
file contents asynchronously. This allows a training program to call methods
to add data to the file directly from the training loop, without slowing down
training.
"""
#初始化函数 log_dir 传入一个储存事件文件的文件夹名称
def __init__(self, log_dir=None, comment='', purge_step=None, max_queue=10,
flush_secs=120, filename_suffix=''):
"""Creates a `SummaryWriter` that will write out events and summaries
to the event file.
注:可以不看,仅需知道函数参数传啥即可
def add_scalars(self, main_tag, tag_scalar_dict, global_step=None, walltime=None):
def add_scalar(
self,
tag,#图表标题
scalar_value,#数值,相当于纵轴
global_step=None,#步,相当于横轴
walltime=None,
new_style=False,
double_precision=False,
):