Pytorch教程[09]Tensorboard

TensorBoard:TensorFlow中强大的可视化工具

一.SummaryWriter

功能:提供创建event file的高级接口
主要属性:
• log_dir:event file输出文件夹
• comment:不指定log_dir时,
文件夹后缀
• filename_suffix:event file文件名后缀

from torch.utils.tensorboard import SummaryWriter
import numpy as np

writer = SummaryWriter()

for n_iter in range(100):
    writer.add_scalar('Loss/train', np.random.random(), n_iter)
    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)

在这里插入图片描述

1.1 add_scalar()

add_scalar(tag, 
		   scalar_value, 
		   global_step=None, 
		   walltime=None, 
		   new_style=False, 
		   double_precision=False)

功能:记录标量
• tag:图像的标签名,图的唯一标识
• scalar_value:要记录的标量
• global_step:x轴

from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter()
x = range(100)
for i in x:
    writer.add_scalar('y=2x', i * 2, i)
writer.close()

在这里插入图片描述

1.2 add_scalars()

add_scalars(main_tag, 
			tag_scalar_dict, 
			global_step=None, 
			walltime=None)

• main_tag:该图的标签
• tag_scalar_dict:key是变量的tag,value是变量的值

from torch.utils.tensorboard import SummaryWriter
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.

在这里插入图片描述

1.3 add_histogram()

add_histogram(tag, 
			  values, 
			  global_step=None, 
			  bins='tensorflow', 
			  walltime=None, 
			  max_bins=None)

功能:统计直方图与多分位数折线图
• tag:图像的标签名,图的唯一标识
• values:要统计的参数
• global_step:y轴 • bins:取直方图的bins

from torch.utils.tensorboard import SummaryWriter
import numpy as np
writer = SummaryWriter()
for i in range(10):
    x = np.random.random(1000)
    writer.add_histogram('distribution centers', x + i, i)
writer.close()

在这里插入图片描述

1.4 add_image()

add_image(tag, 
		  img_tensor, 
		  global_step=None, 
		  walltime=None, 
		  dataformats='CHW')

功能:记录图像
• tag:图像的标签名,图的唯一标识
• img_tensor:图像数据,注意尺度
• global_step:x轴 • dataformats:数据形式,CHW,HWC,HW

from torch.utils.tensorboard import SummaryWriter
import numpy as np
img = np.zeros((3, 100, 100))
img[0] = np.arange(0, 10000).reshape(100, 100) / 10000
img[1] = 1 - np.arange(0, 10000).reshape(100, 100) / 10000

img_HWC = np.zeros((100, 100, 3))
img_HWC[:, :, 0] = np.arange(0, 10000).reshape(100, 100) / 10000
img_HWC[:, :, 1] = 1 - np.arange(0, 10000).reshape(100, 100) / 10000

writer = SummaryWriter()
writer.add_image('my_image', img, 0)

# If you have non-default dimension setting, set the dataformats argument.
writer.add_image('my_image_HWC', img_HWC, 0, dataformats='HWC')
writer.close()

在这里插入图片描述

1.5 add_images()

add_images(tag, 
		   img_tensor, 
		   global_step=None, 
		   walltime=None, 
		   dataformats='NCHW')
from torch.utils.tensorboard import SummaryWriter
import numpy as np

img_batch = np.zeros((16, 3, 100, 100))
for i in range(16):
    img_batch[i, 0] = np.arange(0, 10000).reshape(100, 100) / 10000 / 16 * i
    img_batch[i, 1] = (1 - np.arange(0, 10000).reshape(100, 100) / 10000) / 16 * i

writer = SummaryWriter()
writer.add_images('my_image_batch', img_batch, 0)
writer.close()

在这里插入图片描述

1.6 torchvision.utils.make_grid

功能:制作网格图像
• tensor:图像数据, BCH*W形式
• nrow:行数(列数自动计算)
• padding:图像间距(像素单位)
• normalize:是否将像素值标准化
• range:标准化范围
• scale_each:是否单张图维度标准化
• pad_value:padding的像素值

make_grid(tensor, nrow=8, padding=2, 
normalize=False, range=None, scale_each=False, 
pad_value=0)

1.7 add_graph()

add_graph(model, 
		  input_to_model=None, 
		  verbose=False, 
		  use_strict_trace=True)

功能:可视化模型计算图
• model:模型,必须是 nn.Module
• input_to_model:输出给模型的数据
• verbose:是否打印计算图结构信息

1.8 torchsummary

功能:查看模型信息,便于调试
• model:pytorch模型
• input_size:模型输入size
• batch_size:batch size
• device:“cuda” or “cpu”

summary(model, 
		input_size, 
		batch_size=-1, 
		device="cuda")

1.9 add_text()

add_text(tag, 
		 text_string, 
		 global_step=None, 
		 walltime=None)
writer.add_text('lstm', 'This is an lstm', 0)
writer.add_text('rnn', 'This is an rnn', 10)

猜你喜欢

转载自blog.csdn.net/weixin_43694096/article/details/123443796