# PyTorch中使用TensorBoard的方法
## 1. TensorBoard簡介
TensorBoard是TensorFlow的可視化工具包,但得益于其強大的功能,現已被廣泛應用于其他深度學習框架如PyTorch中。它能夠幫助開發者:
- 可視化模型結構
- 跟蹤訓練指標(如損失、準確率)
- 分析計算圖
- 查看權重直方圖
- 展示圖像/文本/音頻樣本
## 2. PyTorch集成TensorBoard
PyTorch通過`torch.utils.tensorboard`模塊提供原生支持,無需額外安裝TensorFlow。
### 2.1 安裝依賴
```bash
pip install torch torchvision tensorboard
from torch.utils.tensorboard import SummaryWriter
# 創建Writer實例
writer = SummaryWriter('runs/experiment_1') # 指定日志目錄
# 記錄標量數據
for epoch in range(100):
loss = train_one_epoch()
writer.add_scalar('Training Loss', loss, epoch)
# 關閉Writer
writer.close()
# 記錄單個標量
writer.add_scalar('Loss/train', train_loss, epoch)
# 同時記錄多個標量
writer.add_scalars('Loss', {
'train': train_loss,
'val': val_loss
}, epoch)
model = MyModel()
dummy_input = torch.rand(1, 3, 224, 224) # 適配模型輸入的假數據
writer.add_graph(model, dummy_input)
# 記錄參數分布
for name, param in model.named_parameters():
writer.add_histogram(name, param, epoch)
# 記錄特征向量
features = model.get_features(images)
writer.add_embedding(features, metadata=labels)
# 記錄單張圖像
writer.add_image('input_image', img_tensor)
# 記錄多張圖像網格
writer.add_images('batch_images', img_batch)
# 記錄matplotlib圖像
fig = plt.figure()
plt.plot(x, y)
writer.add_figure('matplotlib_fig', fig)
# 創建自定義儀表盤
writer.add_custom_scalars({
'Loss': ['Multiline', ['Loss/train', 'Loss/val']],
'Accuracy': ['Multiline', ['Acc/train', 'Acc/val']]
})
from torch.utils.tensorboard.summary import hparams
writer.add_hparams(
{'lr': 0.01, 'bsize': 32},
{'hparam/accuracy': 0.9, 'hparam/loss': 0.1}
)
tensorboard --logdir=runs/ --port=6006
def train(model, train_loader, val_loader, epochs=10):
writer = SummaryWriter()
for epoch in range(epochs):
# 訓練階段
model.train()
for batch_idx, (data, target) in enumerate(train_loader):
output = model(data)
loss = criterion(output, target)
loss.backward()
optimizer.step()
# 記錄batch級指標
if batch_idx % 100 == 0:
writer.add_scalar('Loss/train_batch', loss.item(),
epoch*len(train_loader)+batch_idx)
# 驗證階段
val_loss, acc = validate(model, val_loader)
writer.add_scalar('Loss/val', val_loss, epoch)
writer.add_scalar('Accuracy/val', acc, epoch)
# 記錄模型參數
for name, param in model.named_parameters():
writer.add_histogram(name, param, epoch)
# 記錄最終模型
torch.save(model.state_dict(), 'model.pth')
writer.add_text('Model', 'Training completed and model saved')
writer.close()
--port
參數指定不同端口runs/
目錄下的舊實驗writer.close()
被調用PyTorch與TensorBoard的結合為深度學習實驗提供了強大的可視化支持。通過合理使用各種記錄方法,開發者可以:
建議在項目初期就集成TensorBoard,將可視化作為開發流程的標準組成部分。 “`
注:實際運行時請根據PyTorch和TensorBoard的版本調整語法,本文基于PyTorch 1.8+和TensorBoard 2.4+編寫。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。