PyTorch項(xiàng)目源碼學(xué)習(xí)(2)——Tensor代碼結(jié)構(gòu)初步學(xué)習(xí)

PyTorch版本:1.10.0

Tensor

Tensor是Pytorch項(xiàng)目較為重要的一部分,其中的主要功能如存儲(chǔ)赔桌,運(yùn)算由C++和CUDA實(shí)現(xiàn)吐葵,本文主要從前端開(kāi)始探索學(xué)習(xí)Tensor的代碼結(jié)構(gòu)册踩。

結(jié)構(gòu)探索

PyTorch前端位于torch目錄下,從_tensor.py可以找到Tensor的python定義度苔,可以看到其繼承自torch._C._Tensorbase

而Tensorbase的定義可以從torch/_C目錄下的__init__.pyi.in文件中找到

可以看到這里傳入了metaclass的參數(shù)匆篓,同時(shí)注釋表明_TensorBase 和 _TensorMeta的定義存在于python_variable.cpp中

學(xué)習(xí)一下metaclass相關(guān)知識(shí)。參考來(lái)源于 https://blog.csdn.net/jiguanglong/article/details/93204314

Python除了部分特殊符號(hào)之外都是對(duì)象寇窑,類同樣是對(duì)象鸦概,為了便于理解,可以認(rèn)為它們相比普通對(duì)象甩骏,多了可以被實(shí)例化的特點(diǎn)窗市。

所有的對(duì)象應(yīng)該擁有基本屬性__class__(屬于什么類),而所有的類在此基礎(chǔ)上應(yīng)該擁有另一個(gè)基本屬性__bases__(父類)横漏。如果進(jìn)行實(shí)驗(yàn)可以發(fā)現(xiàn):
一直通過(guò)__class__追溯上去谨设,type是最終的頂點(diǎn)(type的__class__指向自己)熟掂;
一直通過(guò)__bases__追溯上去缎浇,object是最終的頂點(diǎn)(object的__bases__為空)。

因此可以稱type為元類(一般類的類)赴肚,當(dāng)我們進(jìn)行類定義的時(shí)候素跺,實(shí)際上運(yùn)行的是class = type(classname, superclasses, attributedict) (也就是type的__call__方法)

而如果傳遞了metaclass參數(shù),此時(shí)類創(chuàng)建的動(dòng)作就不再由type執(zhí)行誉券,而是執(zhí)行參數(shù)對(duì)象的__call__方法指厌。

有什么用:通過(guò)這種改變?cè)惖姆椒ǎ覀兛梢栽陬悇?chuàng)建的過(guò)程中增加自定義的工作踊跟,該特性極大地提高了編程的自由度踩验。

進(jìn)一步,在torch/csrc/autograd/python_variable.cpp 中可以找到上面Base與Meta類的定義來(lái)源

1509與1518行分別對(duì)這兩個(gè)類的定義和文件中的C++對(duì)象進(jìn)行了綁定(module在這里是pytorch前端的_C)商玫,進(jìn)而找到

因此表面上的結(jié)構(gòu)可以表示成如下

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末箕憾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拳昌,更是在濱河造成了極大的恐慌袭异,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炬藤,死亡現(xiàn)場(chǎng)離奇詭異御铃,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)沈矿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門上真,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人羹膳,你說(shuō)我怎么就攤上這事睡互。” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵湃缎,是天一觀的道長(zhǎng)犀填。 經(jīng)常有香客問(wèn)我碗暗,道長(zhǎng)膀藐,這世上最難降的妖魔是什么答渔? 我笑而不...
    開(kāi)封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任酝锅,我火速辦了婚禮新症,結(jié)果婚禮上齐帚,老公的妹妹穿的比我還像新娘速客。我一直安慰自己盈滴,他們只是感情好偿洁,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布撒汉。 她就那樣靜靜地躺著,像睡著了一般涕滋。 火紅的嫁衣襯著肌膚如雪睬辐。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天宾肺,我揣著相機(jī)與錄音溯饵,去河邊找鬼。 笑死锨用,一個(gè)胖子當(dāng)著我的面吹牛丰刊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播增拥,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼啄巧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了掌栅?” 一聲冷哼從身側(cè)響起秩仆,我...
    開(kāi)封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎渣玲,沒(méi)想到半個(gè)月后逗概,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡忘衍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年逾苫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枚钓。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡铅搓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出搀捷,到底是詐尸還是另有隱情星掰,我是刑警寧澤多望,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站氢烘,受9級(jí)特大地震影響怀偷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜播玖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一椎工、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蜀踏,春花似錦维蒙、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至局待,卻和暖如春斑响,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背燎猛。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工恋捆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留照皆,地道東北人重绷。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像膜毁,于是被迫代替她去往敵國(guó)和親昭卓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容