91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Pytorch中實現反向求導更新網絡參數

發布時間:2021-05-20 18:01:46 來源:億速云 閱讀:284 作者:Leah 欄目:開發技術

怎么在Pytorch中實現反向求導更新網絡參數?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

方法一:手動計算變量的梯度,然后更新梯度

import torch
from torch.autograd import Variable
# 定義參數
w1 = Variable(torch.FloatTensor([1,2,3]),requires_grad = True)
# 定義輸出
d = torch.mean(w1)
# 反向求導
d.backward()
# 定義學習率等參數
lr = 0.001
# 手動更新參數
w1.data.zero_() # BP求導更新參數之前,需先對導數置0
w1.data.sub_(lr*w1.grad.data)

一個網絡中通常有很多變量,如果按照上述的方法手動求導,然后更新參數,是很麻煩的,這個時候可以調用torch.optim

方法二:使用torch.optim

import torch
from torch.autograd import Variable
import torch.nn as nn
import torch.optim as optim
# 這里假設我們定義了一個網絡,為net
steps = 10000
# 定義一個optim對象
optimizer = optim.SGD(net.parameters(), lr = 0.01)
# 在for循環中更新參數
for i in range(steps):
 optimizer.zero_grad() # 對網絡中參數當前的導數置0
 output = net(input) # 網絡前向計算
 loss = criterion(output, target) # 計算損失
 loss.backward() # 得到模型中參數對當前輸入的梯度
 optimizer.step() # 更新參數

注意:torch.optim只用于參數更新和對參數的梯度置0,不能計算參數的梯度,在使用torch.optim進行參數更新之前,需要寫前向與反向傳播求導的代碼

pytorch的優點

1.PyTorch是相當簡潔且高效快速的框架;2.設計追求最少的封裝;3.設計符合人類思維,它讓用戶盡可能地專注于實現自己的想法;4.與google的Tensorflow類似,FAIR的支持足以確保PyTorch獲得持續的開發更新;5.PyTorch作者親自維護的論壇 供用戶交流和求教問題6.入門簡單

關于怎么在Pytorch中實現反向求導更新網絡參數問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

陆良县| 平凉市| 台前县| 乌鲁木齐市| 托克逊县| 吴江市| 包头市| 阿坝| 宁德市| 通道| 灌阳县| 甘南县| 麻栗坡县| 双辽市| 于田县| 玉田县| 三明市| 定安县| 林甸县| 石河子市| 大同县| 禹州市| 阳西县| 哈密市| 潞城市| 西乡县| 昭平县| 留坝县| 崇州市| 永福县| 安陆市| 盐山县| 宁强县| 潍坊市| 平山县| 内黄县| 白朗县| 铁岭市| 丁青县| 航空| 上虞市|