Tensorboard的多方位解析

一、Tensorboard PyTorch教程

PyTorch是一種基於Python的深度學習框架,這個框架在構建計算圖和自動求導的方面非常靈活方便。Tensorboard是PyTorch的一個可視化工具,可以幫助用戶更好的分析和理解模型。

下面是一個簡單的PyTorch Tensorboard示例,展示了如何在PyTorch中實現一個簡單的神經網路,並且使用tensorboard插件來監控訓練過程中的各種指標。


import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.utils.tensorboard import SummaryWriter

# 定義神經網路模型
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(784, 256)
        self.fc2 = nn.Linear(256, 10)

    def forward(self, x):
        x = F.relu(self.fc1(x))
        x = self.fc2(x)
        return x

# 載入MNIST數據集
train_set = torchvision.datasets.MNIST(root='mnist', train=True, download=True, transform=torchvision.transforms.ToTensor())
train_loader = torch.utils.data.DataLoader(train_set, batch_size=128, shuffle=True)

# 定義損失函數和優化器
net = Net()
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(net.parameters(), lr=0.01, momentum=0.5)

# 設置tensorboard
writer = SummaryWriter('log')

# 開始訓練
for epoch in range(10):
    for batch_idx, (data, target) in enumerate(train_loader):
        optimizer.zero_grad()
        output = net(data.view(-1, 784))
        loss = criterion(output, target)
        loss.backward()
        optimizer.step()
        
        # 使用tensorboard監控
        if batch_idx % 10 == 0:
            writer.add_scalar('Loss/train', loss.item(), epoch*len(train_loader)+batch_idx)
            writer.add_scalar('Accuracy/train', accuracy, epoch*len(train_loader)+batch_idx)

writer.close() # 記得關閉tensorboard

通過tensorboard,我們可以監控損失值和準確率,並且可視化地展示出來。這樣就方便我們對訓練過程進行分析和調試。

二、Tensorboard Loss曲線

Loss曲線是神經網路訓練中非常重要的一部分,因為它可以幫助我們判斷模型是否收斂。通過tensorboard,我們可以輕鬆地獲得訓練過程中的loss曲線。


# 以上面PyTorch示例為例

# 定義 tensorboard writer
writer = SummaryWriter('log')

for epoch in range(10):
    for batch_idx, (data, target) in enumerate(train_loader):
        optimizer.zero_grad()
        output = net(data.view(-1, 784))
        loss = criterion(output, target)
        loss.backward()
        optimizer.step()
        
        writer.add_scalar('Loss/train', loss.item(), epoch*len(train_loader)+batch_idx)
        
        # 列印 loss
        if batch_idx % 100 == 0:
            print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(
                epoch, batch_idx * len(data), len(train_loader.dataset),
                100. * batch_idx / len(train_loader), loss.item()))
writer.close()

以上代碼中,我們可以看到,在每個epoch訓練完成後,都會輸出一個batch的loss值。同時也將loss值添加到tensorboard中,這樣就可以觀察到訓練過程中的loss曲線。

三、Tensorboard M是什麼單位

在使用 tensorboard 監控訓練過程的時候,許多人會注意到一些參數的單位問題,比如說 learning rate 、batch size 等。而 M 是什麼單位也是一個問題。其實M是指mini-batch的簡稱。

因為數據集可能非常大,不能一次性將所有的數據載入到內存中。所以我們選擇使用mini-batch的方式,每次從數據集中隨機抽取一個小批量的數據進行訓練。使用Tensorboard監控訓練過程中的參數時,通常會將M這個參數添加到name中表示。

四、Tensorboard Tensorflow教程

TensorFlow是一個使用數據流圖進行數值計算的開源軟體庫,廣泛應用於深度學習等領域中。Tensorboard也是TensorFlow中重要的一個工具,可以幫助我們更好地理解和調試模型。

下面是一個簡單的TensorFlow Tensorboard示例,展示了如何在TensorFlow中實現一個簡單的神經網路,並且使用tensorboard插件來監控訓練過程中的各種指標。


import tensorflow as tf

# 載入MNIST數據集
(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()

# 數據預處理
train_images = train_images / 255.0
test_images = test_images / 255.0

# 定義神經網路模型
model = tf.keras.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(128, activation=tf.nn.relu),
    tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])

# 定義優化器和損失函數
model.compile(optimizer='adam', 
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# 設置tensorboard
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir='logs')

# 開始訓練
model.fit(train_images, train_labels, epochs=5, callbacks=[tensorboard_callback])

通過tensorboard,我們可以監控各種指標,包括訓練數據的準確率、損失函數值、測試數據的準確率等等。

五、Tensorboard可視化模型

Tensorboard除了可以幫助我們監控訓練過程中的各種指標之外,還可以幫助我們理解和可視化模型。我們可以使用Tensorboard更好地理解模型的結構和組成部分。


import torch
import torch.nn as nn
from torch.utils.tensorboard import SummaryWriter

# 定義神經網路模型
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(784, 256)
        self.fc2 = nn.Linear(256, 10)

    def forward(self, x):
        x = F.relu(self.fc1(x))
        x = self.fc2(x)
        return x

# 設置tensorboard
writer = SummaryWriter('log')

# 可視化模型
model = Net()
data = torch.rand(1, 784)
writer.add_graph(model, data)
writer.close()

上述代碼中,我們使用了 PyTorch 的 nn.Module 類來定義了一個包含兩個全連接層的神經網路模型。然後我們使用 tensorboard.add_graph 函數將模型可視化出來。

當然這些只是入門級的Tensorboard教程。當我們在研究一個更加複雜的神經網路模型的時候,還需要去學習和使用其他高級的Tensorboard函數。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/293564.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-26 13:14
下一篇 2024-12-26 13:14

相關推薦

  • NLP領域的多方位探索

    一、文本分類 文本分類是NLP領域中的一個重要任務,它的目的是自動將文本分配到不同的預定義類別中。文本分類技術可以在廣泛的領域中應用,例如情感分析、輿情監測等。 文本分類的一種常見…

    編程 2025-04-24
  • display屬性的多方位應用

    一、display屬性概述 display屬性是CSS中常用的一個屬性,它定義了一個元素的盒模型類型,以及其在頁面上的布局形式。在HTML文檔中,每個HTML標籤都有一個默認的di…

    編程 2025-04-23
  • 多方位詳解日期格式化

    一、基本概念 日期格式化是指將日期類型轉換為字元串類型的過程,常見於前端頁面的數據展示。日期格式化通常需要指定日期的格式。在 JavaScript 中,可以使用 Date 對象來表…

    編程 2025-04-23
  • 小企鵝輸入法的多方位優勢

    一、智能識別與糾錯能力 小企鵝輸入法在智能化方面成績突出。它能夠聚合用戶常用的表情符號、片語和詞庫,預測和推薦輸入內容,大大提升了用戶的輸入效率。同時,它還能夠通過機器學習實現糾錯…

    編程 2025-04-23
  • Unity Toggle組件的多方位探索

    一、Toggle是什麼 Toggle是unity中的一個UI組件,可以理解為開關或者複選框,用於實現用戶交互中的選擇功能,常用於設置界面、遊戲中的道具選擇、任務選項等。 Toggl…

    編程 2025-04-22
  • str.substring()——多方位詳解

    一、基本介紹 在JavaScript中,字元串是常見數據類型之一,而在我們操作字元串時,常常需要截取其中一部分。這時,str.substring()方法就派上了用場。該方法用於獲取…

    編程 2025-04-12
  • 多方位了解查看Linux版本命令

    一、使用uname命令查看Linux版本 在Linux系統中,使用uname命令可以查看Linux系統的版本和系統基本信息。 例如,輸入如下命令: uname -a 輸出結果類似於…

    編程 2025-04-12
  • matlab if函數:多方位解析

    一、if函數基本用法 if是matlab中常用的基礎控制語句之一,它根據判斷條件是否成立,決定程序接下來執行的語句。if函數的基本語法為: if (condition) state…

    編程 2025-04-12
  • Matlab編輯器的多方位探究

    一、編輯器基礎功能 Matlab作為一種用於科學計算的高級編程語言和互動式環境,其內置的編輯器自然是其一個重要且基礎的部分。作為一個編輯器,它的基礎功能包括文件的打開、編輯、保存、…

    編程 2025-04-12
  • xmselect.render的多方位詳解

    一、簡介 xm-select是一款基於jQuery開發的多功能選擇器。它可以用於各種web頁面上,包括但不限於表單、操作界面等。其中xmselect.render就是用來生成xm-…

    編程 2025-04-12

發表回復

登錄後才能評論