欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python神經(jīng)網(wǎng)絡Pytorch中Tensorboard函數(shù)使用

 更新時間:2022年05月07日 14:33:49   作者:Bubbliiiing  
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡Pytorch中Tensorboard常用函數(shù)的使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

所需庫的安裝

很多人問Pytorch要怎么可視化,于是決定搞一篇。

tensorboardX==2.0
tensorflow==1.13.2

由于tensorboard原本是在tensorflow里面用的,所以需要裝一個tensorflow。會自帶一個tensorboard。

也可以不裝tensorboardX,直接使用pytorch當中的自帶的Tensorboard。導入方式如下:

from torch.utils.tensorboard import SummaryWriter

不過由于我使用pytorch當中的自帶的Tensorboard的時候有一些bug。所以還是使用tensorboardX來寫這篇博客。

常用函數(shù)功能

1、SummaryWriter()

這個函數(shù)用于創(chuàng)建一個tensorboard文件,其中常用參數(shù)有:

log_dir:tensorboard文件的存放路徑flush_secs:表示寫入tensorboard文件的時間間隔

調用方式如下:

writer = SummaryWriter(log_dir='logs',flush_secs=60)

2、writer.add_graph()

這個函數(shù)用于在tensorboard中創(chuàng)建Graphs,Graphs中存放了網(wǎng)絡結構,其中常用參數(shù)有:

model:pytorch模型

input_to_model:pytorch模型的輸入

如下所示為graphs:

調用方式如下:

if Cuda:
    graph_inputs = torch.from_numpy(np.random.rand(1,3,input_shape[0],input_shape[1])).type(torch.FloatTensor).cuda()
else:
    graph_inputs = torch.from_numpy(np.random.rand(1,3,input_shape[0],input_shape[1])).type(torch.FloatTensor)
writer.add_graph(model, (graph_inputs,))

3、writer.add_scalar()

這個函數(shù)用于在tensorboard中加入loss,其中常用參數(shù)有:

  • tag:標簽,如下圖所示的Train_loss
  • scalar_value:標簽的值
  • global_step:標簽的x軸坐標

調用方式如下:

writer.add_scalar('Train_loss', loss, (epoch*epoch_size + iteration))

4、tensorboard --logdir=

在完成tensorboard文件的生成后,可在命令行調用該文件,tensorboard網(wǎng)址。具體代碼如下:

tensorboard --logdir=D:\Study\Collection\Tensorboard-pytorch\logs

示例代碼

import torch
from torch.autograd import Variable
import torch.nn.functional as functional
from tensorboardX import SummaryWriter
import matplotlib.pyplot as plt
import numpy as np
# x的shape為(100,1)
x = torch.from_numpy(np.linspace(-1,1,100).reshape([100,1])).type(torch.FloatTensor)
# y的shape為(100,1)
y = torch.sin(x) + 0.2*torch.rand(x.size())
class Net(torch.nn.Module):
    def __init__(self, n_feature, n_hidden, n_output):
        super(Net, self).__init__()
        # Applies a linear transformation to the incoming data: :math:y = xA^T + b
        # 全連接層,公式為y = xA^T + b
        self.hidden = torch.nn.Linear(n_feature, n_hidden)
        self.predict = torch.nn.Linear(n_hidden, n_output)
    def forward(self, x):
        # 隱含層的輸出
        hidden_layer = functional.relu(self.hidden(x))
        output_layer = self.predict(hidden_layer)
        return output_layer
# 類的建立
net = Net(n_feature=1, n_hidden=10, n_output=1)
writer = SummaryWriter('logs')
graph_inputs = torch.from_numpy(np.random.rand(2,1)).type(torch.FloatTensor)
writer.add_graph(net, (graph_inputs,))
# torch.optim是優(yōu)化器模塊
optimizer = torch.optim.Adam(net.parameters(), lr=1e-3)
# 均方差loss
loss_func = torch.nn.MSELoss() 
for t in range(1000):
    prediction = net(x)
    loss = loss_func(prediction, y)
    # 反向傳遞步驟
    # 1、初始化梯度
    optimizer.zero_grad()
    # 2、計算梯度
    loss.backward()
    # 3、進行optimizer優(yōu)化
    optimizer.step()
    writer.add_scalar('loss',loss, t)
writer.close()

效果如下:

以上就是python神經(jīng)網(wǎng)絡Pytorch中Tensorboard函數(shù)使用的詳細內容,更多關于Pytorch Tensorboard函數(shù)的資料請關注腳本之家其它相關文章!

相關文章

最新評論