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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

《动手学深度学习》 第二天 (自动求梯度)

發布時間:2024/7/19 pytorch 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《动手学深度学习》 第二天 (自动求梯度) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2.3、自動求梯度

MXNet提供的autograd模塊可以用來自動求梯度。

2.3.1 一個簡單的栗子

這里我們要求對函數 y = 2xTx (2乘以x的轉秩乘以X)求關于列向量 x 的梯度。(使用jupyter notebook)

1、 創建變量x,并賦初值

x = nd.arange(4).reshape((4,1)) # 4行一列 x


2、 調用attach_grad函數來申請存儲梯度所需要的內存

x.attach_grad() #為了求有關變量x的梯度

3、 為減少計算和內存開銷,默認條件下MXNet不會記錄用于求梯度的計算,這里我們需要調用 record函數 來要求MXNet記錄與求梯度有關的計算

with autograd.record():y = 2 * nd.dot(x.T, x)

4、 通過調用backward函數自動求梯度

y.backward()

這里可以驗證一下答案是否正確,我們知道,原函數的梯度是4x。

assert(x.grad - 4 * x).norm().asscalar() == 0 x.grad

2.3.2 訓練模型和預測模型

默認情況下,autograd會將運行模式從預測模式轉為訓練模式,這時可以通過調用 is_training 函數來查看

print(autograd.is_training()) with autograd.record():print(autograd.is_training())

2.3.3 對Python控制流求梯度

即使函數的計算圖包含了Python的控制流,我們還是可能使用MXNet對變量求梯度。
example

def f(a):b = a * 2while b.norm().asscalar() < 1000:b = b * 2if b.sum().asscalar() > 0:c = belse:c = 100 * breturn c

仍然使用record函數記錄計算,調用backward函數求梯度

a = nd.random.normal(shape=1) a.attach_grad() with autograd.record():c = f(a) c.backward()

驗證是否正確

a.grad == c / a

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的《动手学深度学习》 第二天 (自动求梯度)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。