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