当前位置:网站首页>使用Visdom對損失函數進行監控
使用Visdom對損失函數進行監控
2022-06-11 18:21:00 【亞林瓜子】
問題
需要監控損失函數Loss啥時候訓練收斂了。
解决
pip
pip3 install visdom
Visdom
運行:
python3 -m visdom.server
然後,打開http://localhost:8097/即可。
Python
最後,在Python程序中埋點即可。
def cifar10_go():
# 實例化一個窗口
viz = Visdom(port=8097)
# 初始化窗口的信息
viz.line([0.], [0.], win='train_loss', opts=dict(title='train loss'))
transform = transforms.Compose([
transforms.RandomResizedCrop((224, 224)),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
cifar10_dataset = torchvision.datasets.CIFAR10(root='./data',
train=False,
transform=transform,
target_transform=None,
download=True)
dataloader = DataLoader(dataset=cifar10_dataset, # 傳入的數據集, 必須參數
batch_size=32, # 輸出的batch大小
shuffle=True, # 數據是否打亂
num_workers=4) # 進程數, 0錶示只有主進程
model = MyCNN()
# 交叉熵損失函數
criterion = nn.CrossEntropyLoss()
# 定義優化器
optimizer = torch.optim.SGD(model.parameters(), lr=1e-4, weight_decay=1e-2, momentum=0.9)
# 下面開始訓練
start = time.time() # 記時開始
for epoch in range(3): # 設置要在全部數據上訓練的次數
for i, data in enumerate(dataloader):
# data就是我們獲取的一個batch size大小的數據
inputs, labels = data # 分別得到輸入的數據及其對應的類別結果
# 首先要通過zero_grad()函數把梯度清零,不然PyTorch每次計算梯度會累加,不清零的話第二次算的梯度等於第一次加第二次的
optimizer.zero_grad()
# 獲得模型的輸出結果,也即是當前模型學到的效果
outputs = model(inputs)
# 獲得輸出結果和數據真正類別的損失函數
loss = criterion(outputs, labels)
print('Epoch {}, Loss {}'.format(epoch + 1, loss))
# 算完loss之後進行反向梯度傳播,這個過程之後梯度會記錄在變量中
loss.backward()
# 用計算的梯度去做優化
optimizer.step()
# 更新監聽的信息
viz.line([loss.item()], [i], win='train_loss', update='append')
end = time.time() # 計時結束
print('使用時間: {:.5f} s'.format(end - start))
# 保存模型訓練結果
torch.save(model, './MyCNN_model_23.pth')
這裏以為上一個例子:《PyTorch使用CIFAR-10數據進行訓練》。
效果

參考:
边栏推荐
- Async leads to unexpected function results and changes the intention of the original code; await is only valid in async functions and the top level bodies of modules
- v-for循环遍历
- NFT platform development NFT mall source code NFT mall development chain game development
- DataNode的启动流程
- Hello go (XV). Go language common standard library V
- 判断是否为平衡二叉树
- Global and Chinese market of high frequency bipolar junction transistors 2022-2028: Research Report on technology, participants, trends, market size and share
- [C语言]压缩字符串并添加标记字符
- 密码学概述
- Various poses for text modification using sed
猜你喜欢

ACL 2022: is it no longer difficult to evaluate word polysemy? A new benchmark "dibimt"

H.264概念
![[C语言]限制查找次数,输出次数内查找到的最大值](/img/e6/cbb8dd54b49ade453251a70c8455e8.png)
[C语言]限制查找次数,输出次数内查找到的最大值
![[Golang]力扣Leetcode - 292. Nim 游戏(数学)](/img/82/54c3f6be9d08687b42cba0487380f0.png)
[Golang]力扣Leetcode - 292. Nim 游戏(数学)

NFT platform development NFT mall source code NFT mall development chain game development
![Winter vacation daily question 2022 [week1 not finished]](/img/56/a5ca98ddd128bcceb8e24f0edfeac6.jpg)
Winter vacation daily question 2022 [week1 not finished]

排序的循环链表
![[c language] shift elements after sorting elements of an array](/img/5b/3e74fc40787d94f6d0ab93332140ba.png)
[c language] shift elements after sorting elements of an array
![[c language] output students' names and scores in descending order of scores with structures](/img/41/b9dba88941560b296f4d7153b7c684.png)
[c language] output students' names and scores in descending order of scores with structures

使用mysql判断日期是星期几
随机推荐
Experiment 2: write a program and verify that the linear table sequence represents all operations
LeetCode_ Prefix tree_ Medium_ 208. implement trie (prefix tree)
Several commands related to domain name
神经网络与深度学习-2- 机器学习简单示例-PyTorch
File class learning
[C语言]用结构体把最高分的学生输出,可有多个最高分
Global and Chinese market of web content management software 2022-2028: Research Report on technology, participants, trends, market size and share
排序的循环链表
[Golang]力扣Leetcode - 349. 两个数组的交集(哈希表)
使用mysql判断日期是星期几
SISO decoder for a general (n,n-1) SPC code(補充章節3)
在同花顺上面开股票账户好不好,安不安全?
Getting started with CTF
v-for中的key的作用和原理
MATLAB 保存imshow绘制图片到指定文件夹中的两种方法
[C语言]限制查找次数,输出次数内查找到的最大值
Cryptology Summary
密评-----
力扣23题,合并K个升序链表
viso的常见操作