人工智能:PyTorch深度學(xué)習(xí)框架
作者:郝光明
PyTorch是一個(gè)基于Torch的Python機(jī)器學(xué)習(xí)框架。它是由Facebook的人工智能研究小組在2016年開(kāi)發(fā)的,解決了Torch因?yàn)槭褂肔ua編程語(yǔ)言普及度不高的問(wèn)題,故采用了集成非常廣泛的Python編程語(yǔ)言來(lái)實(shí)現(xiàn)。
今天給大家講解一下PyTorch深度學(xué)習(xí)框架的一些基礎(chǔ)知識(shí),希望對(duì)大家理解PyTorch有一定的幫助!
1、PyTorch
PyTorch是一個(gè)基于Torch的Python機(jī)器學(xué)習(xí)框架。它是由Facebook的人工智能研究小組在2016年開(kāi)發(fā)的,解決了Torch因?yàn)槭褂肔ua編程語(yǔ)言普及度不高的問(wèn)題,故采用了集成非常廣泛的Python編程語(yǔ)言來(lái)實(shí)現(xiàn)。
2、PyTorch常用的工具包
- torch:類(lèi)似于Numpy的通用數(shù)組庫(kù),可以在將張量類(lèi)型轉(zhuǎn)換為(torch.cuda.TensorFloat)并支持在GPU上進(jìn)行計(jì)算。
- torch.autograd:主要用于構(gòu)建計(jì)算圖形并自動(dòng)獲取漸變的包
- torch.nn:具有共同層和成本函數(shù)的神經(jīng)網(wǎng)絡(luò)庫(kù)
- torch.optim:具有通用優(yōu)化算法(如SGD,Adam等)的優(yōu)化包
- torch.utils:數(shù)據(jù)載入器。具有訓(xùn)練器和其他便利功能
- torch.legacy(.nn/.optim) :處于向后兼容性考慮,從 Torch 移植來(lái)的 legacy 代碼
- torch.multiprocessing:python 多進(jìn)程并發(fā),實(shí)現(xiàn)進(jìn)程之間 torch Tensors 的內(nèi)存共享
3、PyTorch特點(diǎn)
- 動(dòng)態(tài)神經(jīng)結(jié)構(gòu):PyTorch通過(guò)一種反向自動(dòng)求導(dǎo)的技術(shù),可以做到零延遲地任意改變神經(jīng)網(wǎng)絡(luò)的行為,避免因?yàn)闃?gòu)建神經(jīng)網(wǎng)絡(luò)完成后,如果需要調(diào)整神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),只能從頭開(kāi)始的麻煩,采用PyTorch大大節(jié)省了人力和時(shí)間成本。
- Debug調(diào)試方便:PyTorch 的設(shè)計(jì)思路是線(xiàn)性、直觀且易于使用的,當(dāng)你執(zhí)行一行代碼時(shí),一步步去執(zhí)行,不涉及異步調(diào)試的繁瑣,所以當(dāng)代碼出現(xiàn)Bug 的時(shí)候,可以通過(guò)很方便定位代碼的位置,避免因?yàn)閎ug錯(cuò)誤的指向或者異步和不透明的引擎造成查詢(xún)問(wèn)題的麻煩。
- 代碼簡(jiǎn)潔易懂:PyTorch的代碼相對(duì)于Tensorflow更加簡(jiǎn)潔容易讀懂,并且PyTorch本身源代碼閱讀起來(lái)也要友好很多這樣更容易深入理解PyTorch。
- 社區(qū)活躍度高:PyTorch 擁有一個(gè)非?;钴S的社區(qū)和論壇(discuss.pytorch.org)。它的文檔(pytorch.org)梳理的非常清晰,初學(xué)者入門(mén)很快;并且它與 PyTorch 版本保持同步,并提供一組完整教程。PyTorch 使用起來(lái)非常簡(jiǎn)單,所以學(xué)習(xí)成本也就比較低。
4、PyTorch不足之處
- 可視化監(jiān)控能力弱:缺少直接可用監(jiān)控和可視化接口:
- 不如TensorFlow應(yīng)用廣泛:PyTorch 不是端到端的機(jī)器學(xué)習(xí)開(kāi)發(fā)工具;實(shí)際應(yīng)用程序的開(kāi)發(fā)需要將 PyTorch 代碼轉(zhuǎn)換為另一個(gè)框架,例如 Caffe2,轉(zhuǎn)換后將應(yīng)用程序部署到服務(wù)器、工作站和移動(dòng)設(shè)備。
責(zé)任編輯:武曉燕
來(lái)源:
IT技術(shù)分享社區(qū)