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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Lesson 7 (3) 深入理解PyTorch与PyTorch库架构

發(fā)布時(shí)間:2025/4/5 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Lesson 7 (3) 深入理解PyTorch与PyTorch库架构 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我們已經(jīng)理解了神經(jīng)網(wǎng)絡(luò)是如何誕生的也了解了怎樣的算法才是一個(gè)優(yōu)秀的算法,現(xiàn)在我們需要借助深度學(xué)習(xí)框架(Deep?learning?framework來幫助我們實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)算法在本門課程中我們所使用的深度學(xué)習(xí)框架是PyTorch,也就是Torch庫的Python版本之前我們已經(jīng)仔細(xì)地介紹了PyTorch中的基本數(shù)據(jù)結(jié)構(gòu)Tensor以及自動(dòng)求梯度工具autograd,相信你已經(jīng)對(duì)PyTorch有了一定的了解在今天的課程中,我們將更深入地理解PyTorch庫的構(gòu)成以及PyTorch框架的設(shè)計(jì)理念為之后熟練使用PyTorch打下基礎(chǔ)。

1?PyTorch的優(yōu)勢(shì)

對(duì)于已經(jīng)選擇了這門課的你,應(yīng)該早就把PyTorch的優(yōu)勢(shì)爛熟于心了。就如同每一個(gè)學(xué)習(xí)Python的人在Python課程的第一堂課會(huì)聽到的內(nèi)容一樣無數(shù)的資料課程都在說著相似的話PyTorch簡單易用上手容易語法清晰……這些雖然是事實(shí)但卻無法加深你對(duì)PyTorch或深度學(xué)習(xí)的理解在這一節(jié)們將從深度學(xué)習(xí)模型的判別框架來看待,為什么PyTorch是一個(gè)優(yōu)秀的深度學(xué)習(xí)框架

我們?cè)谏弦还?jié)中說過一個(gè)好的深度學(xué)習(xí)模型應(yīng)該是預(yù)測(cè)結(jié)果優(yōu)秀計(jì)算速度超快并且能夠服務(wù)于業(yè)務(wù)(即實(shí)際生產(chǎn)環(huán)境)的。巧合的是,PyTorch框架正是基于這樣目標(biāo)建立的

一個(gè)神經(jīng)網(wǎng)絡(luò)算法的結(jié)果如何才能優(yōu)秀呢?如果在機(jī)器學(xué)習(xí)中我們是通過模型選擇調(diào)整參數(shù)特征工程等事項(xiàng)來提升算法的效果那在神經(jīng)網(wǎng)絡(luò)中我們能夠做的其實(shí)只有兩件事

1)加大數(shù)據(jù)規(guī)模

2)調(diào)整神經(jīng)網(wǎng)絡(luò)的架構(gòu),也就是調(diào)整網(wǎng)絡(luò)上的神經(jīng)元個(gè)數(shù)網(wǎng)絡(luò)的層數(shù)信息在網(wǎng)絡(luò)之間傳遞的方

對(duì)于第一點(diǎn)PyTorch的優(yōu)勢(shì)是毫無疑問的PyTorchFacebook AI研究實(shí)驗(yàn)室研發(fā)。在2019年,FB天都需要支持400萬億次深度學(xué)習(xí)算法預(yù)測(cè)并且這個(gè)數(shù)據(jù)還在持續(xù)上漲因此PyTorch天生被設(shè)計(jì)成非常適合進(jìn)行巨量數(shù)據(jù)運(yùn)算并且可以支持分布式計(jì)算還可以無縫銜接到NVIDIAGPU上來運(yùn)行除此之外,PyTorch的運(yùn)行方式有意被設(shè)計(jì)成更快速更穩(wěn)定的方式這使得它運(yùn)行效率非常高速度很快,這一點(diǎn)你在使用PyTorch進(jìn)行編程的時(shí)候就能夠感受到為高速運(yùn)行巨量數(shù)據(jù)下的神經(jīng)網(wǎng)絡(luò)而生PyTorch即保證了神經(jīng)網(wǎng)絡(luò)結(jié)果優(yōu)秀又權(quán)衡了計(jì)算速度

而第二點(diǎn)則是深度學(xué)習(xí)整個(gè)學(xué)科的靈魂操作我們耳熟能詳?shù)?/span>RNNCNNLSTM等算法,其實(shí)都是在原始神經(jīng)網(wǎng)絡(luò)上進(jìn)行了神經(jīng)元、鏈接、或信息傳遞方式的改變而誕生的因此一個(gè)優(yōu)秀的深度學(xué)習(xí)框架必須具備非常高的靈活性和可調(diào)試性才有可能不斷推進(jìn)深度學(xué)習(xí)算法的研(同時(shí)一個(gè)優(yōu)秀的深度學(xué)習(xí)算法工程師必須具備靈活調(diào)用任何可用網(wǎng)絡(luò)結(jié)構(gòu)的能力,才可能搭建出適應(yīng)實(shí)際工業(yè)場(chǎng)景的神經(jīng)網(wǎng)絡(luò))。幸運(yùn)的是,PyTorch框架的創(chuàng)始團(tuán)隊(duì)在建立PyTorch時(shí)的目標(biāo)就是建立最靈活的框架來表達(dá)深度學(xué)習(xí)算法這為PyTorch能夠最大程度釋放神經(jīng)網(wǎng)絡(luò)算法的潛放大深度學(xué)習(xí)的本質(zhì)優(yōu)勢(shì)、實(shí)現(xiàn)更好的算法效果提供了基礎(chǔ)

同時(shí)為了能夠讓算法調(diào)試變得更加容易,PyTorch在設(shè)計(jì)之初就支持eager?model(類似于在jupyter notebook的運(yùn)行方式,可以每寫幾行代碼就運(yùn)行并且返回相應(yīng)的結(jié)果通常在研究原型時(shí)使用),tensorflow等框架在最初是不支持eager model,只支持graph-based model(一次性寫完全部的編譯后上傳服務(wù)器進(jìn)行全部運(yùn)行這種類型的代碼更加適合部署到生產(chǎn)環(huán)境中)。現(xiàn)在的PyTorch使JIT編輯器使得代碼能夠在eagergraph?model之間自由轉(zhuǎn)換tensorflow也在1.7版本之后補(bǔ)充了這個(gè)功能

最難得的是PyTorchAPI簡化程度很高代碼確實(shí)簡單易懂。在編程的世界里,封裝越底層就越靈活(如C++就比Python更加靈活),但越底層的框架往往就越復(fù)雜需要的代碼量也越多PyTorch建設(shè)團(tuán)隊(duì)在構(gòu)筑PyTorch項(xiàng)目時(shí)一直遵守簡單勝于復(fù)雜的原則為了讓PyTorch盡量簡單他們參考了大NumPy以及Python的基本語法PyTorch可以無縫銜接到Python在保留靈活性的同時(shí)最高程度地簡化了API,繼承了Python的大部分語法風(fēng)格對(duì)于熟練使用Python的人來說使用PyTorch通常輕而易舉

此之外PyTorch十分重視從研發(fā)算法到工業(yè)應(yīng)用的過程PyTorch的官網(wǎng)頭圖上甚至能夠直接看from?research to production(從研發(fā)到生產(chǎn))的字樣。他們甚至完整地定義了算法部署到實(shí)際環(huán)境中需要達(dá)到的數(shù)個(gè)要求,并在2019年QCon會(huì)議的演講中詳細(xì)地說明了PyTorch團(tuán)隊(duì)是如何圍繞”從研發(fā)到生產(chǎn)“這個(gè)目標(biāo)設(shè)計(jì)了PyTorch的部署模塊JIT。

總結(jié)一下??PyTorch的優(yōu)勢(shì)可以概括為以下幾點(diǎn)

  • 天生支持巨量數(shù)據(jù)和巨大神經(jīng)網(wǎng)絡(luò)的高速運(yùn)
  • 靈活性高足以釋放神經(jīng)網(wǎng)絡(luò)的潛力并且在保留靈活性的同時(shí)又有Python語法簡單易學(xué)的優(yōu)勢(shì)?
  • 支持研究環(huán)境與生產(chǎn)環(huán)境無縫切換調(diào)試成本很低

作為深度學(xué)習(xí)框架,PyTorch可以說具備幾乎所有產(chǎn)出優(yōu)質(zhì)深度學(xué)習(xí)算法的條件。現(xiàn)在,PyTorch社區(qū)及圍繞PyTorch的生態(tài)還在建設(shè)中這可以說是它唯一的弱勢(shì)了作為一門深度學(xué)習(xí)入門課程我們非常推薦你選擇PyTorch作為你的第一個(gè)深度學(xué)習(xí)框架但它是否會(huì)成為你的最后一個(gè)深度學(xué)習(xí)框架交由學(xué)完課程的你來決定

2?PyTorch庫的基本架構(gòu)

雖然PyTorch庫在建設(shè)時(shí)擁有許多先進(jìn)的理念但在庫的規(guī)劃整理這一點(diǎn)上它卻與大部分編程庫一顯得有些潦草任何編程庫都不是在一個(gè)完美的企劃下被設(shè)計(jì)出來的而是在實(shí)際應(yīng)用中不斷被探索出來的,這就導(dǎo)致大部分編程庫的體系是混亂的——即初學(xué)者完全不知道應(yīng)該從哪里開始學(xué)習(xí)典型的代表就是matplotlib??NumPy這些明明很有用,但是官網(wǎng)寫得不知所云的庫。

PyTorch官網(wǎng)在深度學(xué)習(xí)領(lǐng)域常常受到贊揚(yáng)許多人認(rèn)為PyTorch官網(wǎng)寫得簡單明了容易上手但如果是學(xué)過sklearn課堂的小伙伴,就會(huì)知道sklearn官網(wǎng)是多么規(guī)范多么易學(xué)

再看看PyTorch網(wǎng)這令人窒息的按字母表順序排列的類的列表

文檔寫得好?其實(shí)全是同行的襯托反正比tf寫得好一點(diǎn)點(diǎn)

在開始學(xué)習(xí)PyTorch之前,我們對(duì)PyTorch的核心模塊進(jìn)行了梳理現(xiàn)在PyTorch中的模塊主要分為兩大類:原生Torch庫下,用于構(gòu)建靈活神經(jīng)網(wǎng)絡(luò)的模塊,以及成AI領(lǐng)域中用以輔助具體行業(yè)應(yīng)用的模

?

兩大模塊的層次是并列的,當(dāng)我們導(dǎo)入庫的時(shí)候我們是這樣做

import torch import torchvision

實(shí)際上在我們對(duì)PyTorch進(jìn)行安裝的時(shí)候,我們也是同時(shí)安裝了torchtorchvision等模塊?當(dāng)我們需要優(yōu)化算法時(shí)我們運(yùn)行的是

from torch import optim

看出庫的層次區(qū)別了嗎?在我們課程的前幾周我們會(huì)集中在Torch模塊幫助大家熟悉PyTorch的基本操作,并培養(yǎng)從0建立起自定義神經(jīng)網(wǎng)絡(luò)的能力。在課程后續(xù)的篇章我們將會(huì)涉入成熟AI領(lǐng)域的許多庫中對(duì)成熟算法和先進(jìn)的神經(jīng)網(wǎng)絡(luò)架構(gòu)進(jìn)行講解為了構(gòu)建強(qiáng)大的神經(jīng)網(wǎng)絡(luò)我們會(huì)交叉使用兩個(gè)模塊的內(nèi)容在我們學(xué)習(xí)的過程中我們或許會(huì)用到不在這兩張架構(gòu)圖上的庫后續(xù)我們會(huì)繼續(xù)補(bǔ)充和修繕這兩張架構(gòu)圖

了解了這么多內(nèi)容后你終于可以開始學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)了PyTorch代碼雖然簡單但運(yùn)行一行簡單的代碼卻需要豐富的基礎(chǔ)知識(shí)從下一節(jié)課開始我們從0學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)并逐漸讓你掌握PyTorch中的代

總結(jié)

以上是生活随笔為你收集整理的Lesson 7 (3) 深入理解PyTorch与PyTorch库架构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。