tensorboardx使用
https://github.com/lanpa/tensorboardX
安装
pip install tensorflow
pip install tensorboardx
ttensorboard 是 TensorFlow 的一个附加工具,可以记录训练过程的数字、图像等内容,以方便研究人员观察神经网络训练过程。
ttensorboardX 这个工具使得 TensorFlow 外的其他神经网络框架也可以使用到 Tensorboard 的便捷功能。
from tensorboardX import SummaryWriter
#
# # Creates writer1 object.
# # The log will be saved in 'runs/exp'
# writer1 = SummaryWriter('runs/exp')
#
# # Creates writer2 object with auto generated file name
# # The log directory will be something like 'runs/Aug20-17-20-33'
# writer2 = SummaryWriter()
#
# # Creates writer3 object with auto generated file name,
the comment will be appended to the filename.
# # The log directory will be something like 'runs/Aug20-17-20-33-resnet'
# writer3 = SummaryWriter(comment='resnet')
'''
以上展示了三种初始化 SummaryWriter 的方法:
1:提供一个路径,将使用该路径来保存日志
2:无参数,默认将使用 runs/日期时间 路径来保存日志
3:提供一个 comment 参数,将使用 runs/日期时间-comment 路径来保存日志
'''
'''
python tensorboard.py
tensorboard --logdir runs
--logdir=runs/
就可以在 tensorboard 可视化界面中方便地横向比较 runs/ 下不
同次实验所得数据的差异。
'''
writer = SummaryWriter('runs/scalar_example')
for i in range(10):
writer.add_scalar('quadratic', i ** 2, global_step=i)
# 二次函数
writer.add_scalar('exponential', 2 ** i, global_step=i)
# 指数函数
'''
参数
tag (string): 数据名称,不同名称的数据使用不同曲线展示
scalar_value (float): 数字常量值
global_step (int, optional): 训练的 step
walltime (float, optional): 记录发生的时间,默认为 time.time()
这里的 scalar_value 一定是 float 类型,
如果是 PyTorch scalar tensor,则需要调用 .item() 方法获取其数值。
我们一般会使用 add_scalar 方法来记录训练
过程的 loss、accuracy、learning rate 等数值的变化,直观地监控训练过程。
'''
# from tensorboardX import SummaryWriter
# #
# # # Creates writer1 object.
# # # The log will be saved in 'runs/exp'
# # writer1 = SummaryWriter('runs/exp')
# #
# # # Creates writer2 object with auto generated file name
# # # The log directory will be something like 'runs/Aug20-17-20-33'
# # writer2 = SummaryWriter()
# #
# # # Creates writer3 object with auto generated file name, the comment will be appended to the filename.
# # # The log directory will be something like 'runs/Aug20-17-20-33-resnet'
# # writer3 = SummaryWriter(comment='resnet')
#
# '''
# 以上展示了三种初始化 SummaryWriter 的方法:
#
# 1:提供一个路径,将使用该路径来保存日志
# 2:无参数,默认将使用 runs/日期时间 路径来保存日志
# 3:提供一个 comment 参数,将使用 runs/日期时间-comment 路径来保存日志
# '''
#
# '''
# python tensorboard.py
#
# tensorboard --logdir runs
#
# --logdir=runs/
# 就可以在 tensorboard 可视化界面中方便地横向比较 runs/ 下不
# 同次实验所得数据的差异。
# '''
# writer = SummaryWriter('runs/scalar_example')
# for i in range(10):
# writer.add_scalar('quadratic', i ** 2, global_step=i)
# # 二次函数
# writer.add_scalar('exponential', 2 ** i, global_step=i)
# # 指数函数
#
# '''
# 参数
# tag (string): 数据名称,不同名称的数据使用不同曲线展示
# scalar_value (float): 数字常量值
# global_step (int, optional): 训练的 step
# walltime (float, optional): 记录发生的时间,默认为 time.time()
#
# 这里的 scalar_value 一定是 float 类型,
# 如果是 PyTorch scalar tensor,则需要调用 .item() 方法获取其数值。
# 我们一般会使用 add_scalar 方法来记录训练
# 过程的 loss、accuracy、learning rate 等数值的变化,直观地监控训练过程。
#
# '''
# from torch.utils.tensorboard import SummaryWriter
# import numpy as np
#
# '''
#
# loss可视化'''
# writer = SummaryWriter()
#
# for n_iter in range(100):
# writer.add_scalar('Loss/train', np.random.random(), n_iter)
# # 第一个参数表示纵坐标,第二个参数表示图表中的折线,即loss大小,第三个参数表示横坐标的值
# writer.add_scalar('Loss/test', np.random.random(), n_iter)
# writer.add_scalar('Accuracy/train', np.random.random(), n_iter)
# writer.add_scalar('Accuracy/test', np.random.random(), n_iter)
"""
#在同一张折线图下显示多组变量
"""
from torch.utils.tensorboard import SummaryWriter
import numpy as np
writer = SummaryWriter()
r = 5
for i in range(100):
writer.add_scalars('run_14h', {'xsinx': i * np.sin(i / r),
'xcosx': i * np.cos(i / r),
'tanx': np.tan(i / r)}, i) # 在同一张折线图下显示多组变量
writer.close()
# This call adds three values to the same scalar plot with the tag
# 'run_14h' in TensorBoard's scalar section.
'''
模型结构可视化'''
# from torch.utils.tensorboard import SummaryWriter
#
# from torchvision.models import resnet50
# import torch
#
# model = resnet50(pretrained=False)
# inputs = torch.ones(size=(1, 3, 224, 224))
#
# writer = SummaryWriter()
# writer.add_graph(model, input_to_model=inputs,
# verbose=False)
# # 参数解析:model即为你所需要可视化的模型,
# # input_to_model为输入模型中的变量,verbose:是否在控制台打印模型结构
#
'''# # tensorboard --logdir=runs'''
'''
https://tensorboardx.readthedocs.io/en/stable/index.html
https://blog.csdn.net/bigbennyguo/article/details/87956434'''