赞
踩
- log_dir: 写入的文件目录,可自定义;默认写入到当前文件夹的runs目录下:runs/current_time_username
- comment: 注释,附加到目录名的后缀
- purge_step: 日志在T+X步崩溃,并在T步重启;大于等于T步的事件将被tensorboard清除并隐藏;注意崩溃的实验和清除的实验应具有相同的log_dir
- max_queue: 等待事件的队列大小, 默认值10
- flush_secs: 刷新事件和摘要到磁盘的时间间隔;默认值2分钟
- filename_suffix: 附加到目录里所有事件的后缀名
- tag: 字符串;数据的名称
- snd_tensor: 张量,音频数据,维度1 x L,值在区间\[-1, 1\]
- global_step: 记录步长
- sample_rate: 采样率,单位Hz
- walltime: 可选覆盖默认walltime(time.time()) 事件发生后的秒数(Optional override default walltime (time.time()) seconds after epoch of event)
- 通过在“scalars”中收集图表标签来创建特殊图表, 请注意, 对于每个SummaryWriter()此函数只能被调用一次;因为它仅向tensorboard提供元数据,所以该函数可以在训练循环之前或之后被调用。
- layout:字典,{categoryName: *charts*},charts也是一个字典{chartsname: *listofproperties*}. *listofproperties*的第一项是图表类型(Multiline或者Margin),第二个元素应该是包含标签的列表(您已在add_scalar函数中使用过,该函数将被收集到新图表中)
# 不要运行
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter()
layout = {'Taiwan':{'twse':['Multiline',['twse/0050', 'twse/2330']]},
'USA':{ 'dow':['Margin', ['dow/aaa', 'dow/bbb', 'dow/ccc']],
'nasdaq':['Margin', ['nasdaq/aaa', 'nasdaq/bbb', 'nasdaq/ccc']]}
}
writer.add_custom_scalars(layout)
- 创建marginchart的简写。 与“ add_custom_scalars()”类似,但唯一必要的参数是* tags *,应该恰好包含3个元素。
- tags: 在“add_scalars()”中使用的标签列表。
writer.add_custom_scalars_marginchart(['twse/0050', 'twse/2330', 'twse/2006'])
- 创建multilinechart的缩写,与“add_custom_scalars”类似,但唯一必要的参数是* tags *
- tags:在“add_scalars()”中使用的标签列表。
writer.add_custom_scalars_multilinechart(['twse/0050', 'twse/2330'])
- mat: torch.Tensor或者numpy.array,矩阵的每一行是data point的特征向量,维度:(N, D)N是data的数量,D是嵌入的维度
- metadata:标签列表,每个元素将转换为字符串
- label_img:torch.Tensor,对应每个data point的图像,维度:(N, C, H, W)
- global_step:记录步长
- tag:嵌入embedding的名字
- 可能出现的问题:module 'tensorflow_core._api.v2.io.gfile' has no attribute 'get_filesystem' python环境中同时安装了PyTorch和tensorflow,所以导致了在使用tensorboard时,是按tensorflow的api来查找的,因此就导致了上面这个问题
import keyword # python关键词 import torch from torch.utils.tensorboard import SummaryWriter writer = SummaryWriter(log_dir="My_embedding", comment="_add_embedding") meta = [] while len(meta) < 100: meta.extend(keyword.kwlist) meta = meta[:100] for i, v in enumerate(meta): meta[i] = v + str(i) label_img = torch.rand(100, 3, 10, 32) for i in range(100): label_img[i]*=i/100.0 # writer.add_embedding(torch.randn(100, 5), metadata=meta, label_img=label_img) # 出错了 writer.add_embedding(torch.randn(100, 5), label_img=label_img) # writer.add_embedding(torch.randn(100, 5), metadata=meta)
- tag: 字符串,数据名称
- values: 创建直方图的数值,类型为torch.Tensor, numpy.array, string/blobname
- global_step: 步长,整型
- bins:字符串,可为"tensorflow", "auto", "fd"...决定bins如何被创建
- walltime:可选覆盖默认walltime(time.time()) 事件发生后的秒数
from torch.utils.tensorboard import SummaryWriter
import numpy as np
writer = SummaryWriter(filename_suffix="_pytorch")
for i in range(10):
x = np.random.random(1000)
writer.add_histogram('distribution centers', x + i, i)
writer.close()
- min: float or int
- max: float or int
- num: int,值的数量
- sum:float or int, 所有值的和
- sum_squares: float or int, 所有值的平方和
- bucket_limits: torch.Tensor 或者numpy.array,每个bucket的上界
- bucket_counts: torch.Tensor 或者numpy.array,每个bucket里值的数量
from torch.utils.tensorboard import SummaryWriter import numpy as np writer = SummaryWriter(comment="_add_histogram_raw") dummy_data = [] for idx, value in enumerate(range(50)): dummy_data.extend([idx + 0.001] * value) bins = list(range(50+2)) bins = np.array(bins) values = np.array(dummy_data).astype(float).reshape(-1) counts, limits = np.histogram(values, bins=bins) sum_sq = values.dot(values) # 自身与自身的点积 writer.add_histogram_raw( tag='histogram_with_raw_data', min=values.min(), max=values.max(), num=len(values), sum=values.sum(), sum_squares=sum_sq, bucket_limits=limits[1:].tolist(), bucket_counts=counts.tolist(), global_step=0) writer.close()
- tensorboard中进行超参数结果的对比
- hparam_dict: 字典中的每个键值对都是超参数的名称及其对应的值。
- metric_dict: 字典中的每个键/值对都是metric的名称及其对应的值。请注意,此处使用的key在tensorboard记录中应该是唯一的。否则,您在add_scalar中添加的值将显示在hparam插件中。在大多数情况下,这是不需要的。
from torch.utils.tensorboard import SummaryWriter
with SummaryWriter() as w:
for i in range(5):
w.add_hparams({'lr': 0.1*i, 'bsize': i},
{'hparam/accuracy': 10*i, 'hparam/loss': 10*i})
- img_tensor: torch.Tensor, numpy.array, string/blobname, 图像数据;维度:(3, H, W)
- 注:img_tensor的维度也可以是(1, H, W), (H, W), (H, W, 3),只要dataformats相应地改为'CHW', 'HW','HWC'
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(comment='_add_image') 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()
- img_tensor: 同上
- box_tensor: torch.Tensor, numpy.array, string/blobname, box数据(用于检测到的物体),维度:NX4,其中N是box的数量,行中的每4个元素代表(xmin,ymin,xmax,ymax)。
- rescale:Optional scale override
- dataformats:NCHW, NHWC, CHW, HWC, HW, WH, etc.
- img_tensor: 同上, 维度:(N, 3, H, W),可根据dataformats改变
- dataformats: NCHW, NHWC, CHW, HWC, HW, WH, etc.
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(comment="_add_images")
writer.add_images('my_image_batch', img_batch, 0)
writer.close()
- 将网格或3D点云添加到TensorBoard。 可视化基于Three.js,因此它允许用户与渲染的对象进行交互。 除了顶点,面等基本定义外,用户还可以提供相机参数,照明条件等。
- vertices: torch.Tensor, 顶点的3D坐标列表。维度:(B, N, 3)对应(batch, num_of_vertices, channels)
- colors: torch.Tensor, 每个顶点的颜色。维度:(B, N, 3),对于“ uint8”类型,值应位于\[0,255\]中;对于“ float”类型,值应位于\[0,1\]中。
- faces: torch.Tensor, 每个三角形内的顶点的索引。(可选的)维度:(B, N, 3), 该值应位于类型'uint8'的\[0,number_of_vertices\]中。
- config_dict: 具有ThreeJS类名称和配置的字典。
from torch.utils.tensorboard import SummaryWriter vertices_tensor = torch.as_tensor([ [1, 1, 1], [-1, -1, 1], [1, -1, -1], [-1, 1, -1], ], dtype=torch.float).unsqueeze(0) colors_tensor = torch.as_tensor([ [255, 0, 0], [0, 255, 0], [0, 0, 255], [255, 0, 255], ], dtype=torch.int).unsqueeze(0) faces_tensor = torch.as_tensor([ [0, 2, 3], [0, 3, 1], [0, 1, 2], [1, 3, 2], ], dtype=torch.int).unsqueeze(0) writer = SummaryWriter(comment='_add_mesh') writer.add_mesh('my_mesh', vertices=vertices_tensor, colors=colors_tensor, faces=faces_tensor) writer.close()
- 未知,查阅tensorboard文档
- 精度-召回率曲线
- 绘制精度-召回率曲线可让您了解模型的在不同阈值设置下的性能。通过此功能,您提供真实标签(T/F)和预测置信度(通常是模型的输出)。TensorBoard用户界面将让您以交互方式选择阈值。
- labels(torch.Tensor, numpy.array, string/blobname): 基本事实数据。 每个元素的二进制标签。
- predictions(torch.Tensor, numpy.array, or string/blobname): 元素被分类为true的概率, 值在\[0, 1\]
- num_thresholds (int):用于绘制曲线的阈值数。
- weights: 暂未知
from torch.utils.tensorboard import SummaryWriter
import numpy as np
labels = np.random.randint(2, size=100) # binary label
predictions = np.random.rand(100)
writer = SummaryWriter(comment='_add_pr_curve')
writer.add_pr_curve('pr_curve', labels, predictions, 0)
writer.close()
- 添加带有原始数据的精确召回曲线。
- true_positive_sounts(torch.Tensor, numpy.array, or string/blobname): 真正例计数
- false_positive_counts(torch.Tensor, numpy.array, or string/blobname): 假正例计数
- true_negative_counts(torch.Tensor, numpy.array, or string/blobname): 真负例计数
- false_negative_counts(torch.Tensor, numpy.array, or string/blobname): 假负例计数
- precision: 同上
- recall:同上
- num_thresholds: 同上
- see: https://github.com/tensorflow/tensorboard/blob/master/tensorboard/plugins/pr_curve/README.md
- scalar_value (float or string/blobname): 要保存的值
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter(comment="_add_scalar")
x = range(100)
for i in x:
writer.add_scalar('y=2x', i * 2, i)
writer.close()
- 将标量数据添加到summary,该方法也会将数据保存在内存中,极端情况下会爆了内存
- main_tag (string): 标签的父级目录名
- tag_scalar_dict (dict): 存储标签和对应值的键值对
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter(comment='_add_scalars')
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.
- tag (string): Data identifier
- text_string (string): 保存的字符串
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter(comment='_add_text')
writer.add_text('lstm', 'This is an lstm', 0)
writer.add_text('rnn', 'This is an rnn', 10)
writer.close()
- 需要“moviepy”库
- vid_tensor (torch.Tensor): 视频数据,维度:(N, T, C, H, W). 对于“ uint8”类型,值应位于[0,255]中;对于“ float”类型,值应位于[0,1]中。
- fps (float or int): 每秒的帧数
- writer.close(): writer结束时调用
- writer.flush(): 调用此方法以确保所有未决事件均已写入磁盘。
- writer.get_logdir(): 返回将写入事件文件的目录。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。