日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pytorch学习-tensorboard的使用

發(fā)布時間:2025/4/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pytorch学习-tensorboard的使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Pytorch學(xué)習(xí)-tensorboard的使用

  • 1 Tensorboard簡介
    • 運(yùn)行機(jī)制
    • 安裝及測試
  • 2 SummaryWriter實(shí)例的使用教程
    • (1)初始化summaryWriter的方法
    • (2)不同類型數(shù)據(jù)的記錄
      • 1)數(shù)字 scalar
      • 使用樣例
      • 2) 直方圖 histogram
      • 使用樣例
      • 3) 運(yùn)行圖 graph !!
        • 官方樣例
      • 4) 圖片 image (pillow庫支持)
      • 5) 嵌入向量embedding

1 Tensorboard簡介

參考鏈接1安裝:
參考鏈接2使用:
TensorBoard:TensorFlow中強(qiáng)大的可視化工具;
支持標(biāo)量、圖像、文本、音頻、視頻和Embedding等多種數(shù)據(jù)可視化;

運(yùn)行機(jī)制

  • 在python腳本中記錄可視化的數(shù)據(jù);
  • 記錄的數(shù)據(jù)會以event file(事件文件)存放到硬盤中;
  • 在終端使用TensorBoard讀取event file,TensorBoard在網(wǎng)頁端進(jìn)行可視化;
  • 安裝及測試

  • 安裝
    終端輸入命令 pip install tensorboard 以及 pip install future,安裝完成即可。
  • 運(yùn)行可視化
    1) 先運(yùn)行下面的代碼,得到event 文件
  • import numpy as np from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter(comment='test_tensorboard') # 用于記錄要可視化的數(shù)據(jù)for x in range(100):writer.add_scalar('y=2x', x * 2, x) # 'y=2x'是標(biāo)量的名稱, x*2是曲線的y軸,x是曲線的x軸writer.add_scalar('y=pow(2, x)', 2 ** x, x)writer.add_scalars('data/scalar_group', {"xsinx": x * np.sin(x),"xcosx": x * np.cos(x),"arctanx": np.arctan(x)}, x) writer.close()

    2)在terminal輸入 命令 :

    tensorboard --logdir=./runs

    得到類似以下輸出:

    TensorBoard 2.1.1 at http://localhost:6006/ (Press CTRL+C to quit)

    打開對應(yīng)網(wǎng)站即可看到可視化界面

    2 SummaryWriter實(shí)例的使用教程

    (1)初始化summaryWriter的方法

  • 提供一個路徑,使用該路徑保存日志
  • 無參數(shù),默認(rèn)使用 “runs/日期時間” 路徑保存日志
  • 提供一個comment參數(shù),將使用 “runs/日期時間-comment” 路徑保存日志
  • 使用過程:
    對于每次實(shí)驗(yàn)建立一個路徑不同的summaryWriter,也叫一個run
    接下來,調(diào)用summaryWriter中的不同實(shí)例中的add_something方法向日志中寫入文件
    如果想要可視化這些數(shù)據(jù),在命令行中開啟tensorboard即可:tensorboard --logdir=<your_log_dir>
    其中,<your_log_dir> 可以是單個run的路徑,也可以是父目錄,底下含有多個子文件夾,可以在可視化界面橫向的比較runs/下面的不同次實(shí)驗(yàn)得到的數(shù)據(jù)的差異。

    (2)不同類型數(shù)據(jù)的記錄

    1)數(shù)字 scalar

    使用add_scalar 方法記錄數(shù)字常量,如訓(xùn)練過程中的loss,accuracy、learning_rate等,監(jiān)控訓(xùn)練過程

    add_scalar(tag, scalar_value, global_step=None, walltime=None)

    參數(shù)

    • tag(string) 數(shù)據(jù)名稱,不同名稱的數(shù)據(jù)使用不同曲線展示
    • scalar_value(float) 數(shù)字常量值 必須為float類型
    • global_step(int,optional):訓(xùn)練的step
    • walltime(float,optional) 記錄發(fā)生的時間,默認(rèn)為time.time()
      注意:如果為pytorch scalar tensor 需要調(diào)用.item()方法獲取其數(shù)值

    使用樣例

    在’runs/scalar_example‘和‘runs/another_scalar_example’兩個不同目錄中記錄名稱相同但是參數(shù)不同的兩個二次函數(shù)和指數(shù)函數(shù)數(shù)據(jù),效果如下圖。

    from tensorboardX import SummaryWriter writer = SummaryWriter('runs/scalar_example') # 寫入的目錄 for i in range(10):writer.add_scalar('quadratic',i**2,global_step=i)writer.add_scalar('exponential',2**i,global_step=i)writer = SummaryWriter('runs/another_scalar_example') # 在另一個路徑中寫 for i in range(10):writer.add_scalar('quadratic',i**3,global_step=i)writer.add_scalar('exponential',3**i,global_step=i)

    執(zhí)行命令 tensorboard --logdir=./policy_save/runs/ 后打開網(wǎng)頁 【定位到公共在一起的目錄】

    可以看到,兩個名稱相同的數(shù)據(jù)被放在同一張圖中,便于對比觀察。可以在左側(cè)runs欄選擇要查看哪些變量

    2) 直方圖 histogram

    使用add_histogram方法記錄一組數(shù)據(jù)的直方圖

    **add_histogram(tag, values, global_step=None, bins='tensorflow', walltime=None, max_bins=None)**

    參數(shù):

    • tag(string) 數(shù)據(jù)名稱,不同名稱的數(shù)據(jù)使用不同曲線展示
    • values(torch.Tensor,numpy.array, or string / blobname): 用來構(gòu)建直方圖的數(shù)據(jù)
    • global_step(int,optional):訓(xùn)練的step
    • bins(string,optional):取值有‘tensorflow’,‘a(chǎn)uto’,’fd’等 該參數(shù)決定了分桶的方式??。
    • walltime(float,optional) 記錄發(fā)生的時間,默認(rèn)為time.time()
    • max_bins(int,optional):最大分桶數(shù)

    使用樣例

    import numpy as np writer = SummaryWriter('runs/embedding_example') writer.add_histogram('normal_centered',np.random.normal(0,1,1000),global_step=1) writer.add_histogram('normal_centered',np.random.normal(0,2,1000),global_step=50) writer.add_histogram('normal_centered',np.random.normal(0,3,1000),global_step=100)

    結(jié)果圖:
    可以看到有"DISTRIBUTIONS"和"HISTOGRAMS"兩欄,它們都是用來觀察數(shù)據(jù)分布的。其中在"HISTOGRAMS"中,同一數(shù)據(jù)不同 step 時候的直方圖可以上下錯位排布 (OFFSET) 也可重疊排布 (OVERLAY)。

    3) 運(yùn)行圖 graph !!

    使用add_graph方法來可視化一個神經(jīng)網(wǎng)絡(luò)

    **add_graph(model, input_to_model=None, verbose=False, **kwargs)**

    參數(shù):

    • model(torch.nn.Module):待可視化的網(wǎng)絡(luò)模型
    • input_to_model(torch.Tensor or list of torch.Tensor, optional):待輸入神經(jīng)網(wǎng)絡(luò)的變量或一組變量

    官方樣例

    import torch import torch.nn as nn from tensorboardX import SummaryWriterclass LeNet(nn.Module):def __init__(self):super(LeNet, self).__init__()self.conv1 = nn.Sequential( # input_size=(1*28*28)nn.Conv2d(1, 6, 5, 1, 2),nn.ReLU(), # (6*28*28)nn.MaxPool2d(kernel_size=2, stride=2), # output_size=(6*14*14))self.conv2 = nn.Sequential(nn.Conv2d(6, 16, 5),nn.ReLU(), # (16*10*10)nn.MaxPool2d(2, 2) # output_size=(16*5*5))self.fc1 = nn.Sequential(nn.Linear(16 * 5 * 5, 120),nn.ReLU())self.fc2 = nn.Sequential(nn.Linear(120, 84),nn.ReLU())self.fc3 = nn.Linear(84, 10)# 定義前向傳播過程,輸入為xdef forward(self, x):x = self.conv1(x)x = self.conv2(x)# nn.Linear()的輸入輸出都是維度為一的值,所以要把多維度的tensor展平成一維x = x.view(x.size()[0], -1)x = self.fc1(x)x = self.fc2(x)x = self.fc3(x)return xdummy_input = torch.rand(13, 1, 28, 28) # 假設(shè)輸入13張1*28*28的圖片 model = LeNet() with SummaryWriter('runs/graph') as w:w.add_graph(model, dummy_input)writer = SummaryWriter('policy_save/runs/scalar_example') for i in range(100):writer.add_scalar('quadratic', i * 2, global_step=i)writer.add_scalar('exponential', 1.2 * i, global_step=i)writer = SummaryWriter('policy_save/runs/another_scalar_example') for i in range(100):writer.add_scalar('quadratic', i**2, global_step=i)writer.add_scalar('exponential', 1.2**i, global_step=i)

    終端輸入命令:tensorboard --logdir=./runs/graph 點(diǎn)擊網(wǎng)頁查看可視化界面

    4) 圖片 image (pillow庫支持)

    5) 嵌入向量embedding

    總結(jié)

    以上是生活随笔為你收集整理的Pytorch学习-tensorboard的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。