W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
PyTorch TensorBoard 可視化詳解:從入門到精通
TensorBoard 是一個可視化工具,用于跟蹤機器學(xué)習(xí)實驗的指標和可視化模型結(jié)構(gòu)。通過 TensorBoard,我們可以輕松地監(jiān)控訓(xùn)練過程中的損失、準確率、學(xué)習(xí)率等指標的變化,以及可視化模型的計算圖、圖像、直方圖等信息。PyTorch 提供了 torch.utils.tensorboard
模塊,方便我們將 PyTorch 模型和指標記錄到 TensorBoard 中進行可視化。
在使用 TensorBoard 之前,您需要先安裝它。可以通過以下命令安裝 TensorBoard:
pip install tensorboard
安裝完成后,可以通過以下命令啟動 TensorBoard:
tensorboard --logdir=runs
其中,--logdir
參數(shù)指定日志文件的存儲目錄。默認情況下,PyTorch 會將日志文件保存在當前目錄下的 runs
文件夾中。
SummaryWriter
SummaryWriter
是 PyTorch 中用于將數(shù)據(jù)記錄到 TensorBoard 的主要工具。它提供了多種方法來記錄不同類型的可視化數(shù)據(jù),如標量、圖像、直方圖、模型圖等。
SummaryWriter
from torch.utils.tensorboard import SummaryWriter
## 創(chuàng)建一個 SummaryWriter,默認日志文件保存在 ./runs/ 目錄下
writer = SummaryWriter()
## 也可以指定日志文件的保存目錄
writer = SummaryWriter(log_dir='my_logs')
import numpy as np
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)
writer.close()
from torchvision import datasets, transforms
from torchvision.utils import make_grid
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])
trainset = datasets.MNIST('mnist_train', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)
images, labels = next(iter(trainloader))
grid = make_grid(images)
writer.add_image('images', grid, 0)
writer.close()
import torchvision.models as models
model = models.resnet50(False)
images, labels = next(iter(trainloader))
writer.add_graph(model, images)
writer.close()
for i in range(10):
x = np.random.random(1000)
writer.add_histogram('distribution centers', x + i, i)
writer.close()
import keyword
import torch
meta = []
while len(meta) < 100:
meta = meta + 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.close()
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})
通過 add_custom_scalars
方法,可以自定義標量的顯示布局,將多個標量組織成組,便于比較和分析。
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)
可以使用 add_mesh
方法記錄 3D 網(wǎng)格數(shù)據(jù),用于可視化 3D 模型或點云數(shù)據(jù)。
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.add_mesh('my_mesh', vertices=vertices_tensor, colors=colors_tensor, faces=faces_tensor)
writer.close()
PR 曲線(Precision-Recall Curve)用于評估分類模型在不同閾值下的性能??梢酝ㄟ^ add_pr_curve
方法記錄 PR 曲線。
labels = np.random.randint(2, size=100) # 二分類標簽
predictions = np.random.rand(100) # 預(yù)測概率
writer.add_pr_curve('pr_curve', labels, predictions, 0)
writer.close()
通過本教程,我們詳細介紹了 PyTorch 中的 torch.utils.tensorboard
模塊的使用方法,包括如何記錄標量、圖像、直方圖、模型結(jié)構(gòu)、嵌入、超參數(shù)等多種數(shù)據(jù)類型,以及如何利用 TensorBoard 進行可視化。這些功能可以幫助我們更好地理解和優(yōu)化機器學(xué)習(xí)模型的訓(xùn)練過程。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: