亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

pytorch中關于backward的幾個要點說明

 更新時間:2023年02月21日 08:42:19   作者:老李今天學習了嗎  
這篇文章主要介紹了pytorch中關于backward的幾個要點說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

pytorch中backward的2個要點

1. requires_grad

用pytorch定義一個網(wǎng)絡層,如果數(shù)據(jù)中加入requires_grad=True,那么對于這個變量而言,就有了屬于自己的導數(shù)(grad),如果這個數(shù)據(jù)是矩陣,那么他的grad是同樣大小的一個矩陣。

我們將requires_grad視為該變量的一個屬性,我們知道,我們在現(xiàn)實生活中,或者說在神經(jīng)網(wǎng)絡中,大部分的函數(shù)都是一階連續(xù)可微的,也就是說,他的梯度具有唯一性。requires_grad的存在非常合理。

2. scale才能有backward

scale是標量的意思。

首先我們可用用如下語句查看等式中某個自變量的梯度。

print(x.grad, y.grad)

但是有個前提,我們必須要先對他的結果使用.backward()才能去查看,不然的話,他的梯度會顯示為none。

非常需要注意的一點是,能夠使用.backward()的必須是標量(scale),不然程序會報錯。

結合實際的情況,我們看任何一個網(wǎng)絡,使用backward的地方幾乎只有一個,那就是loss.backward()。

首先loss肯定是一個標量,無論是MSE還是交叉熵,也無論是否加上了正則項,那都是求和之后的結果,也就是一個數(shù)值。這一點非常重要。

以下是我隨意寫的一個網(wǎng)絡層,可以感受一下

import torch
import torch.nn as nn
class Linear(nn.Module):
? ? def __init__(self, inc, mult):
? ? ? ? super(Linear, self).__init__()
? ? ? ? self.intc = inc
? ? ? ? self.mult = mult
? ? def forward(self, input0):
? ? ? ? return torch.sum(torch.abs(input0*self.mult+self.intc))
def main():
? ? x = torch.tensor(1.0, requires_grad=True)
? ? y = torch.tensor(2.0,requires_grad=True)
? ? z = x**2+y
? ? p = z*2+x
? ? p.backward()
? ? print(z, x.grad, y.grad)
? ? A = torch.ones([3,3],requires_grad=True)
? ? print(A.requires_grad)
? ? f = Linear(1, -2)
? ? b = f(A)
? ? print(b)
? ? b.backward()
? ? print(A.grad)
if __name__ == '__main__':
? ? main()

pytorch中backward參數(shù)含義

1.標量與矢量問題

backward參數(shù)是否必須取決于因變量的個數(shù),從數(shù)據(jù)中表現(xiàn)為標量和矢量;

  • 例如標量時
  • y=一個明確的值
  • 矢量時
  • y=[y1,y2]

2.backward 參數(shù)計算公式

當因變量公式不是一個標量時,需要顯式添加一個參數(shù)進行計算,以pytorch文檔示例說明:

import torch

a = torch.tensor([2., 3.], requires_grad=True)
b = torch.tensor([6., 4.], requires_grad=True)
Q = 3*a**3 - b**2

例如求解公式

external_grad = torch.tensor([1., 1.])
Q.backward(gradient=external_grad)

可以看到backward參數(shù)為[1,1],具體計算的含義,我們把Q公式拆分為標量形式即:

backward參數(shù)為[1,1],計算公式為

3.autograd

torch.autograd是計算向量和雅可比公式的乘積的引擎:

其中J就是因變量與自變量的雅可比公式,v即backward中的參數(shù);類比于第二節(jié)的例子可對應;

前向傳播得到數(shù)值后,利用此形式計算直接后向傳播計算出損失函數(shù)對應各權值的梯度下降值

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 如何將matlab數(shù)據(jù)導入到Python中使用

    如何將matlab數(shù)據(jù)導入到Python中使用

    這篇文章主要介紹了如何將matlab數(shù)據(jù)導入到Python中使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • 使用PyQt5實現(xiàn)圖片查看器的示例代碼

    使用PyQt5實現(xiàn)圖片查看器的示例代碼

    這篇文章主要介紹了使用PyQt5實現(xiàn)圖片查看器的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • Django路由層如何獲取正確的url

    Django路由層如何獲取正確的url

    本文介紹路由層是如何進行路由匹配的,以diango1.x版本為例,文中通過示例代碼介紹的非常詳細,文中通過示例代碼介紹的非常詳細,
    2021-07-07
  • pandas 實現(xiàn)將兩列中的較大值組成新的一列

    pandas 實現(xiàn)將兩列中的較大值組成新的一列

    這篇文章主要介紹了pandas 實現(xiàn)將兩列中的較大值組成新的一列,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python數(shù)據(jù)結構列表

    Python數(shù)據(jù)結構列表

    這篇文章主要介紹了Python數(shù)據(jù)結構列表,本文重點內(nèi)容主要是對列表數(shù)據(jù)結構的使用,在Python中,序列是一組按順序排列的值。Python?有?3?種內(nèi)置的序列類型:字符串、?元組和列表,下面一起進入文章了解更詳細內(nèi)容吧,需要的小伙伴可以參考一下</P><P>
    2021-12-12
  • python-itchat 統(tǒng)計微信群、好友數(shù)量,及原始消息數(shù)據(jù)的實例

    python-itchat 統(tǒng)計微信群、好友數(shù)量,及原始消息數(shù)據(jù)的實例

    今天小編就為大家分享一篇python-itchat 統(tǒng)計微信群、好友數(shù)量,及原始消息數(shù)據(jù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • 在Python中通過getattr獲取對象引用的方法

    在Python中通過getattr獲取對象引用的方法

    今天小編就為大家分享一篇在Python中通過getattr獲取對象引用的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Pthon批量處理將pdb文件生成dssp文件

    Pthon批量處理將pdb文件生成dssp文件

    這篇文章主要介紹了Pthon批量處理將pdb文件生成dssp文件,通過本例主要學習遍歷目錄下文件的方法,需要的朋友可以參考下
    2015-06-06
  • Python中%r和%s的詳解及區(qū)別

    Python中%r和%s的詳解及區(qū)別

    這篇文章主要介紹了Python中%r和%s的詳解及區(qū)別的相關資料,需要的朋友可以參考下
    2017-03-03
  • Pycharm中import?torch報錯,python中import?torch不報錯的解決

    Pycharm中import?torch報錯,python中import?torch不報錯的解決

    這篇文章主要介紹了Pycharm中import?torch報錯,python中import?torch不報錯的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評論