欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pytorch之關(guān)于PyTorch結(jié)構(gòu)介紹

 更新時(shí)間:2023年09月08日 09:47:59   作者:u012436149  
這篇文章主要介紹了pytorch之關(guān)于PyTorch結(jié)構(gòu)的使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

PyTorch結(jié)構(gòu)介紹

對PyTorch架構(gòu)的粗淺理解,不能保證完全正確,但是希望可以從更高層次上對PyTorch上有個(gè)整體把握。

幾個(gè)重要的類型

和數(shù)值相關(guān)的

  • Tensor
  • Variable
  • Parameter
  • buffer(這個(gè)其實(shí)不能叫做類型,其實(shí)他就是用來保存tensor的)

Tensor

PyTorch 中的計(jì)算基本都是基于 Tensor 的,可以說是 PyTorch 中的基本計(jì)算單元。

Variable

Tensor 的一個(gè) Wrapper ,其中保存了 Variable 的創(chuàng)造者, Variable 的值(tensor),還有 Variable 的梯度( Variable )。

自動求導(dǎo)機(jī)制的核心組件,因?yàn)樗粌H保存了 變量的值,還保存了變量是由哪個(gè) op 產(chǎn)生的。這在反向傳導(dǎo)的過程中是十分重要的。

Variable 的前向過程的計(jì)算包括兩個(gè)部分的計(jì)算,一個(gè)是其值的計(jì)算(即,Tensor的計(jì)算),還有就是 Variable 標(biāo)簽的計(jì)算。標(biāo)簽指的是什么呢?如果您看過PyTorch的官方文檔 Excluding subgraphs from backward 部分的話,您就會發(fā)現(xiàn) Variable 還有兩個(gè)標(biāo)簽: requires_grad volatile 。標(biāo)簽的計(jì)算指的就是這個(gè)。

Paramete:

這個(gè)類是 Variable 的一個(gè)子集, PyTorch 給出這個(gè)類的定義是為了在 Module (下面會談到)中添加模型參數(shù)方便。

模型相關(guān)的

  • Function
  • Module

Function

如果您想在 PyTorch 中自定義 OP 的話,您需要繼承這個(gè)類,您需要在繼承的時(shí)候復(fù)寫 forward backward 方法,可能還需要復(fù)寫 __init__ 方法(由于篇幅控制,這里不再詳細(xì)贅述如果自定義 OP )。您需要在 forward 中定義 OP ,在 backward 說明如何計(jì)算梯度。關(guān)于 Function ,還需要知道的一點(diǎn)就是, Function forward backward 方法中進(jìn)行計(jì)算的類型都是 Tensor ,而不是我們傳入的Variable。計(jì)算完forward和backward之后,會包裝成Varaible返回。這種設(shè)定倒是可以理解的,因?yàn)镺P是一個(gè)整體嘛,OP內(nèi)部的計(jì)算不需要記錄creator

Module

這個(gè)類和 Function 是有點(diǎn)區(qū)別的,回憶一下,我們定義 Function 的時(shí)候, Funciton 本身是不需要變量的,而 Module 是變量和 Function 的結(jié)合體。在某些時(shí)候,我們更傾向稱這種結(jié)構(gòu)為 Layer 。但是這里既然這么叫,那就這么叫吧。

Module 實(shí)際上是一個(gè)容器,我們可以繼承 Module ,在里面加幾個(gè)參數(shù),從而實(shí)現(xiàn)一個(gè)簡單全連接層。我們也可以繼承 Module ,在里面加入其它 Module ,從而實(shí)現(xiàn)整個(gè) VGG 結(jié)構(gòu)。

關(guān)于hook

PyTorch中注冊的hook都是不允許改變hook的輸入值的

下面對PyTorch中出現(xiàn)hook的地方做個(gè)總結(jié):

* Module : register_forward_hook, register_backward_hook

注意:forward_hook不能用來修改Module的輸出值,它的功能就像是安裝個(gè)監(jiān)視器一樣。

我們可以用forward_hook和visdom來監(jiān)控我們Module的輸出。

backward_hook和與 Variable 的功能是類似的,將和 Variable register_hook 一起介紹。

  • Variable: register_hook
  • Variable的register_hook注冊的是一個(gè) backward hook backward hook 是在BP的過程中會用到的??梢杂盟鼇硖幚碛?jì)算的梯度。

關(guān)于hook較為詳盡的介紹

foward過程與backward過程

forward

以一個(gè)Module為例:

  • 1. 調(diào)用module的 call 方法
  • 2. module call 里面調(diào)用 module forward 方法
  • 3. forward 里面如果碰到 Module 的子類,回到第1步,如果碰到的是 Function 的子類,繼續(xù)往下
  • 4. 調(diào)用 Function call 方法
  • 5. Function call 方法調(diào)用了Function的 forward 方法。
  • 6. Function forward 返回值
  • 7. module forward 返回值
  • 8. 在 module call 進(jìn)行 forward_hook 操作,然后返回值。

backward

關(guān)于backward

總結(jié)

PyTorch基本的操作是 OP ,被操作數(shù)是 Tensor 。

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

相關(guān)文章

  • 深入淺出Python中的JSON操作和實(shí)踐

    深入淺出Python中的JSON操作和實(shí)踐

    在現(xiàn)代軟件開發(fā)中,JSON(JavaScript?Object?Notation)已成為數(shù)據(jù)交換的一種標(biāo)準(zhǔn)格式,本文將深入探討Python中處理JSON數(shù)據(jù)的方法和技巧,感興趣的可以了解下
    2024-03-03
  • Python 元組拆包示例(Tuple Unpacking)

    Python 元組拆包示例(Tuple Unpacking)

    今天小編就為大家分享一篇Python 元組拆包實(shí)例(Tuple Unpacking),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python 求一個(gè)列表中所有元素的乘積實(shí)例

    python 求一個(gè)列表中所有元素的乘積實(shí)例

    今天小編就為大家分享一篇python 求一個(gè)列表中所有元素的乘積實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python任意字符串轉(zhuǎn)16, 32, 64進(jìn)制的方法

    Python任意字符串轉(zhuǎn)16, 32, 64進(jìn)制的方法

    今天小編就為大家分享一篇Python任意字符串轉(zhuǎn)16, 32, 64進(jìn)制的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • pycharm的console輸入實(shí)現(xiàn)換行的方法

    pycharm的console輸入實(shí)現(xiàn)換行的方法

    今天小編就為大家分享一篇pycharm的console輸入實(shí)現(xiàn)換行的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python實(shí)現(xiàn)中文分詞FMM算法實(shí)例

    python實(shí)現(xiàn)中文分詞FMM算法實(shí)例

    這篇文章主要介紹了python實(shí)現(xiàn)中文分詞FMM算法,實(shí)例分析了Python基于FMM算法進(jìn)行中文分詞的實(shí)現(xiàn)方法,涉及Python針對文件、字符串及正則匹配操作的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • Python星號*與**用法分析

    Python星號*與**用法分析

    這篇文章主要介紹了Python星號*與**用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python中的星號*與**在函數(shù)參數(shù)及數(shù)值運(yùn)算中的相關(guān)使用技巧,需要的朋友可以參考下
    2018-02-02
  • 七種Python代碼審查工具推薦

    七種Python代碼審查工具推薦

    這篇文章主要介紹了七種Python代碼審查工具推薦,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • 使用python進(jìn)行廣告點(diǎn)擊率的預(yù)測的實(shí)現(xiàn)

    使用python進(jìn)行廣告點(diǎn)擊率的預(yù)測的實(shí)現(xiàn)

    這篇文章主要介紹了使用python進(jìn)行廣告點(diǎn)擊率的預(yù)測的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python?異步之在?Asyncio中如何運(yùn)行阻塞任務(wù)詳解

    Python?異步之在?Asyncio中如何運(yùn)行阻塞任務(wù)詳解

    這篇文章主要為大家介紹了Python?異步之在?Asyncio?中運(yùn)行阻塞任務(wù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03

最新評論