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

溫馨提示×

溫馨提示×

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

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

Python中自動微分的示例分析

發布時間:2021-10-28 10:54:45 來源:億速云 閱讀:166 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“Python中自動微分的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Python中自動微分的示例分析”這篇文章吧。

一、簡介

antograd包是Pytorch中所有神經網絡的核心。autograd為Tensor上的所有操作提供自動微分,它是一個由運行定義的框架,這意味著以代碼運行方式定義后向傳播,并且每一次迭代都可能不同

二、TENSOR

torch.Tensor是包的核心。

1.如果將屬性.requires_grad設置為True,則會開始跟蹤針對tensor的所有操作。

2.完成計算之后,可以調用backward()來自帶計算多有梯度。該張量的梯度將積累到.grad屬性中。

3.要停止tensor歷史記錄的跟蹤,可以調用.detach(),他將與計算歷史記錄分離,并防止將來的計算被跟蹤

4.要停止跟蹤歷史記錄(和使用內存),可以將代碼塊使用with torch.no_grad():包裝起來。在評估模型時候,很有用,因為模型在訓練階段具有requires_grad=True的可訓練參數有利于調參,但是在評估階段不需要梯度

5.還有一個對于autograd實現非常重要的就是Function。tensor和Function互相連接并構建一個肺循環圖,他保存整個完整的計算過程的歷史信息。每個張量都有一個.grad_fn屬性保存著創建了張量的Function的引用(如果用戶自己創建的張量,那么grad_fn是None)

6.如果想計算導數,可以調用Tensor.backward().如果Tensor是標量(包含一個元素數據)則不需要指定任何參數backward(),但是如果他有更多元素,則需要指定gradient參數來指定張量的形狀

import torch
# 創建一個張量,設置requires_grad=True
x=torch.ones(2,2,requires_grad=True)
print(x)
# 針對張量操作
y=x+2
print(y)
print(y.grad_fn)#y作為操作的結果被創建,所以他有grad_fn

# 對y操作
z=y*y*3
out=z.mean()
print(z,out)

運行結果

Python中自動微分的示例分析

# 如果在變量輸入過程中沒有提供相應參數,輸入的標記默認為False,requires_grad_()會改變張量的requires_grad標記
a=torch.randn(2, 2)
a=((a*3)/(a-1))
# 前面沒有設置requires_grad,固會輸出False
print(a.requires_grad)
a.requires_grad_(True)
# 經過上面語句的更改之后,此處應該輸出True
print(a.requires_grad)
b=(a*a).sum()
# 輸出梯度信息
print(b.grad_fn)

運行結果

Python中自動微分的示例分析

三、梯度

現在向后傳播,因為輸出包含了一個標量,out,backward()等同于out.backward(torch.tensor(1,))

out.backward()#向后傳播
print(x.grad)#打印梯度

運行結果

Python中自動微分的示例分析

原理

Python中自動微分的示例分析

Python中自動微分的示例分析

四、Example——雅克比向量積

# 雅克比向量積
x=torch.randn(3,requires_grad=True)
y=x*2
print(y)
while y.data.norm()<1000:
    y=y*2
print(y)#此時y不是標量,torch.autograd 不能夠直接計算整個雅可比,但是如果我們只想要雅可比向量積,只需要簡單的傳遞向量給 backward 作為參數
v=torch.tensor([0.1,1.0,0.0001],dtype=torch.float)
y.backward(v)
print(x.grad)

print(x.requires_grad)
print((x**2).requires_grad)
# 使用一下語句停止從跟蹤歷史中.require_gra=True的張量自動求導
with torch.no_grad():
    print((x**2).requires_grad)

運行結果

Python中自動微分的示例分析

以上是“Python中自動微分的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

同仁县| 凌海市| 勐海县| 三原县| 唐山市| 绥化市| 宣化县| 玛多县| 博兴县| 英吉沙县| 台江县| 临朐县| 禄丰县| 绥中县| 富民县| 健康| 东乡县| 巫溪县| 盐山县| 长乐市| 天等县| 青海省| 乌拉特后旗| 二手房| 铜陵市| 仁化县| 琼海市| 江北区| 赫章县| 澄江县| 新源县| 千阳县| 桂平市| 铜鼓县| 北宁市| 邮箱| 乐业县| 高唐县| 泽普县| 惠安县| 吉水县|