国产gaysexchina男同gay,japanrcep老熟妇乱子伦视频,吃奶呻吟打开双腿做受动态图,成人色网站,国产av一区二区三区最新精品

PyTorch torch.utils.tensorboard

2025-07-02 17:38 更新

PyTorch TensorBoard 可視化詳解:從入門到精通

一、什么是 TensorBoard?

TensorBoard 是一個可視化工具,用于跟蹤機器學(xué)習(xí)實驗的指標和可視化模型結(jié)構(gòu)。通過 TensorBoard,我們可以輕松地監(jiān)控訓(xùn)練過程中的損失、準確率、學(xué)習(xí)率等指標的變化,以及可視化模型的計算圖、圖像、直方圖等信息。PyTorch 提供了 torch.utils.tensorboard 模塊,方便我們將 PyTorch 模型和指標記錄到 TensorBoard 中進行可視化。

二、安裝 TensorBoard

在使用 TensorBoard 之前,您需要先安裝它。可以通過以下命令安裝 TensorBoard:

pip install tensorboard

安裝完成后,可以通過以下命令啟動 TensorBoard:

tensorboard --logdir=runs

其中,--logdir 參數(shù)指定日志文件的存儲目錄。默認情況下,PyTorch 會將日志文件保存在當前目錄下的 runs 文件夾中。

三、核心工具:SummaryWriter

SummaryWriter 是 PyTorch 中用于將數(shù)據(jù)記錄到 TensorBoard 的主要工具。它提供了多種方法來記錄不同類型的可視化數(shù)據(jù),如標量、圖像、直方圖、模型圖等。

(一)創(chuàng)建 SummaryWriter

from torch.utils.tensorboard import SummaryWriter


## 創(chuàng)建一個 SummaryWriter,默認日志文件保存在 ./runs/ 目錄下
writer = SummaryWriter()


## 也可以指定日志文件的保存目錄
writer = SummaryWriter(log_dir='my_logs')

(二)記錄標量數(shù)據(jù)

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()

(三)記錄圖像數(shù)據(jù)

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()

(四)記錄模型結(jié)構(gòu)

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()

(七)記錄超參數(shù)

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)

(二)記錄網(wǎng)格數(shù)據(jù)

可以使用 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 曲線

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()

五、總結(jié)

通過本教程,我們詳細介紹了 PyTorch 中的 torch.utils.tensorboard 模塊的使用方法,包括如何記錄標量、圖像、直方圖、模型結(jié)構(gòu)、嵌入、超參數(shù)等多種數(shù)據(jù)類型,以及如何利用 TensorBoard 進行可視化。這些功能可以幫助我們更好地理解和優(yōu)化機器學(xué)習(xí)模型的訓(xùn)練過程。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號