網站首頁 編程語言 正文
所需庫的安裝
很多人問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來寫這篇博客。
常用函數功能
1、SummaryWriter()
這個函數用于創建一個tensorboard文件,其中常用參數有:
log_dir:tensorboard文件的存放路徑flush_secs:表示寫入tensorboard文件的時間間隔
調用方式如下:
writer = SummaryWriter(log_dir='logs',flush_secs=60)
2、writer.add_graph()
這個函數用于在tensorboard中創建Graphs,Graphs中存放了網絡結構,其中常用參數有:
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()
這個函數用于在tensorboard中加入loss,其中常用參數有:
- tag:標簽,如下圖所示的Train_loss
- scalar_value:標簽的值
- global_step:標簽的x軸坐標
調用方式如下:
writer.add_scalar('Train_loss', loss, (epoch*epoch_size + iteration))
4、tensorboard --logdir=
在完成tensorboard文件的生成后,可在命令行調用該文件,tensorboard網址。具體代碼如下:
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是優化器模塊
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優化
optimizer.step()
writer.add_scalar('loss',loss, t)
writer.close()
效果如下:
原文鏈接:https://blog.csdn.net/weixin_44791964/article/details/106701052
相關推薦
- 2022-11-12 C語言數據結構之單鏈表的查找和建立_C 語言
- 2022-12-30 解決React報錯The?tag?is?unrecognized?in?this?browser_R
- 2022-04-03 詳解iOS?實現一對多代理方案_IOS
- 2022-05-29 C/C++迭代器的失效問題詳解_C 語言
- 2022-04-01 k8s ip地址變了 報錯Error getting node“ err=“node \“maste
- 2023-01-10 Flutter最小刷新范圍探索ValueListenableBuilder使用詳解_Android
- 2022-12-21 Android?全局通知彈窗示例分析詳解_Android
- 2023-01-08 react?頁面加載完成后自動執行標簽的點擊事件的兩種操作方法_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支