溫馨提示×

PyTorch在Ubuntu上如何進行數據可視化

小樊
40
2025-10-02 01:13:25
欄目: 智能運維

1. Matplotlib:基礎數據可視化
Matplotlib是Python最基礎的繪圖庫,適合繪制損失曲線、精度曲線、參數分布等基本圖形。

  • 安裝pip install matplotlib
  • 常用場景與代碼示例
    • 繪制損失/精度曲線:通過plt.plot展示訓練與驗證指標的變化趨勢,幫助判斷模型是否過擬合。
      import matplotlib.pyplot as plt
      epochs = range(1, num_epochs + 1)
      plt.plot(epochs, train_losses, 'bo-', label='Training Loss')
      plt.plot(epochs, val_losses, 'r*-', label='Validation Loss')
      plt.title('Training and Validation Loss')
      plt.xlabel('Epochs')
      plt.ylabel('Loss')
      plt.legend()
      plt.show()
      
    • 可視化模型參數分布:通過plt.hist查看模型各層參數的分布情況,判斷參數是否合理(如權重是否集中在0附近)。
      for name, param in model.named_parameters():
          plt.hist(param.detach().numpy().flatten(), bins=50)
          plt.title(f'Parameter Distribution: {name}')
          plt.show()
      

2. TensorBoard:訓練過程動態可視化
TensorBoard是PyTorch官方推薦的可視化工具,支持標量(損失、精度)、直方圖(參數分布)、圖像(輸入/輸出)、計算圖等多種數據的動態展示。

  • 安裝pip install tensorboard
  • 代碼集成:使用SummaryWriter記錄數據,指定日志保存路徑(如runs/experiment-1)。
    from torch.utils.tensorboard import SummaryWriter
    writer = SummaryWriter('runs/experiment-1')  # 創建writer對象
    
    for epoch in range(num_epochs):
        # 訓練代碼...
        train_loss = compute_loss(model, train_loader)
        val_accuracy = compute_accuracy(model, val_loader)
        
        # 記錄標量數據(全局步數為epoch)
        writer.add_scalar('Loss/train', train_loss, epoch)
        writer.add_scalar('Accuracy/val', val_accuracy, epoch)
    
    writer.close()  # 關閉writer,確保數據寫入磁盤
    
  • 啟動與查看:終端運行tensorboard --logdir=runs,然后在瀏覽器打開localhost:6006,即可看到**Scalars(損失/精度曲線)、Histograms(參數分布)、Graphs(計算圖)**等面板。

3. Seaborn:高級統計可視化
Seaborn基于Matplotlib構建,提供更美觀、更高級的統計圖形(如熱力圖、分布直方圖),適合分析數據的相關性或分布特征。

  • 安裝pip install seaborn pandas
  • 常用場景與代碼示例
    • 繪制損失/精度分布熱力圖:通過seaborn.heatmap展示多個指標的相關性(如損失與精度的關系)。
      import seaborn as sns
      import pandas as pd
      data = pd.DataFrame({'Loss': train_losses, 'Accuracy': train_accuracies})
      sns.heatmap(data.corr(), annot=True, cmap='coolwarm', fmt=".2f")
      plt.title('Loss vs Accuracy Correlation')
      plt.show()
      
    • 繪制指標分布直方圖(帶核密度估計):通過sns.histplot展示指標的分布情況,比Matplotlib更簡潔。
      sns.histplot(train_losses, kde=True, bins=30, color='blue')
      plt.title('Training Loss Distribution')
      plt.xlabel('Loss')
      plt.ylabel('Frequency')
      plt.show()
      

4. Torchviz:模型計算圖可視化
Torchviz用于生成PyTorch模型的計算圖,幫助理解模型的前向傳播過程(如數據流動、層間依賴關系)。

  • 安裝pip install torchviz
  • 代碼示例
    import torch
    from torchviz import make_dot
    # 假設已定義模型model和輸入張量input_tensor
    input_tensor = torch.randn(1, 3, 224, 224)  # 示例輸入(根據模型輸入尺寸調整)
    output = model(input_tensor)  # 前向傳播
    # 生成計算圖(params包含模型所有可學習參數)
    dot = make_dot(output, params=dict(model.named_parameters()))
    dot.render("model_structure", format="png")  # 保存為PNG文件
    
    執行后,當前目錄會生成model_structure.png,展示模型的層結構、數據流向、參數信息。

5. Netron:模型結構可視化
Netron是一款跨平臺的深度學習模型可視化工具,支持PyTorch(.pt/.pth)、TensorFlow(.pb)等多種模型格式,無需編寫代碼即可查看模型結構。

  • 安裝pip install netron
  • 使用方法
    • 終端運行netron model.pt --port 8080model.pt為你的模型文件路徑,--port可指定端口,默認8080)。
    • 瀏覽器打開localhost:8080,即可直觀查看模型的層結構、參數數量、輸入/輸出形狀等信息(支持縮放、拖動、點擊層查看詳情)。

6. Visdom:實時數據可視化
Visdom是Facebook開源的實時可視化工具,適合監控訓練過程中的實時指標(如每步損失、動態圖像),但需要手動啟動服務器。

  • 安裝pip install visdom
  • 使用步驟
    • 啟動服務器:終端運行python -m visdom.server,默認訪問localhost:8097。
    • 代碼集成:通過visdom.Visdom()連接服務器,使用vis.line繪制實時曲線。
      import visdom
      import torch
      vis = visdom.Visdom()  # 連接服務器
      
      # 初始化線條(win為窗口名稱,opts為樣式選項)
      win = vis.line(X=torch.tensor([0]), Y=torch.tensor([0]), 
                    opts=dict(title='Training Loss', xlabel='Step', ylabel='Loss'))
      
      for step in range(100):
          # 模擬訓練損失(替換為實際損失)
          loss = torch.rand(1) * 0.1
          # 更新線條(update='append'表示追加數據)
          vis.line(X=torch.tensor([step]), Y=loss, win=win, update='append')
      
    Visdom界面會實時更新損失曲線,適合觀察訓練過程中的動態變化。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女