① PyTorch到底好用在哪裡
PyTorch是個開源的python機器學習庫,在2017年由Facebook人工智慧研究院(FAIR)推出面世。很多從業者都很推崇這款工具,下面小編給大家整理了一些關於PyTorch的一些基本知識,給各位網友做個參考。
正是因為這款工具如此的好用,所以為了提升效率,很多程序員都將它添加進自己的學習計劃當中。主要原因有四點:第一、多學一個框架,有備無患;第二、同類型功能的框架中PyTorch是最優秀的;第三、容易查找bug,後期查錯非常方便;第四、更加簡單直接,可以看懂底層的框架,對程序員的提升肉眼可見。
以上就是小編整理出來的PyTorch的相關知識。廣大網友們,你們覺得如何?歡迎評論區留言交流。
② pytorch是什麼
PyTorch是一個開源的Python機器學習庫,基於Torch,用於自然語言處理等應用程序。
由Facebook人工智慧研究院(FAIR)基於Torch推出了PyTorch。它是一個基於Python的可續計算包,提供兩個高級功能:具有強大的GPU加速的張量計算(如NumPy)。包含自動求導系統的深度神經網路。
發展:
PyTorch的前身是Torch,其底層和Torch框架一樣,但是使用Python重新寫了很多內容,不僅更加靈活,支持動態圖,而且提供了Python介面。它是由Torch7團隊開發,是一個以Python優先的深度學習框架,不僅能夠實現強大的GPU加速,同時還支持動態神經網路。
PyTorch既可以看作加入了GPU支持的numpy,同時也可以看成一個擁有自動求導功能的強大的深度神經網路。除了Facebook外,它已經被Twitter、CMU和Salesforce等機構採用。
③ 什麼時候才能讓PyTorch更像Python
明敏 發自 凹非寺
量子位 報道 | 公眾號 QbitAI
到底是怎樣的一個bug,能讓95%的Pytorch庫中招,就連特斯拉AI總監深受困擾?
還別說,這個bug雖小,但有夠「狡猾」的。
這就是最近Reddit上熱議的一個話題,是一位網友在使用再平常不過的Pytorch+Numpy組合時發現。
最主要的是,在代碼能夠跑通的情況下,它甚至還會影響模型的准確率!
除此之外,網友熱議的另外一個點,竟然是:
而是它到底算不算一個bug?
這究竟是怎麼一回事?
事情的起因是一位網友發現,在PyTorch中用NumPy來生成隨機數時,受到數據預處理的限制,會多進程並行載入數據,但最後每個進程返回的隨機數卻是相同的。
他還舉出例子證實了自己的說法。
如下是一個示例數據集,它會返回三個元素的隨機向量。這里採用的批量大小分別為2,工作進程為4個。
然後神奇的事情發生了:每個進程返回的隨機數都是一樣的。
這個結果會著實讓人有點一頭霧水,就好像數學應用題求小明走一段路程需要花費多少時間,而你卻算出來了負數。
發現了問題後,這位網友還在GitHub上下載了超過10萬個PyTorch庫,用同樣的方法產生隨機數。
結果更加令人震驚:居然有超過95%的庫都受到這個問題的困擾!
這其中不乏PyTorch的官方教程和OpenAI的代碼,連特斯拉AI總監Karpathy也承認自己「被坑過」!
但有一說一,這個bug想要解決也不難:只需要在每個epoch都重新設置seed,或者用python內置的隨機數生成器就可以避免這個問題。
到底是不是bug?
如果這個問題已經可以解決,為什麼還會引起如此大的討論呢?
因為網友們的重點已經上升到了「哲學」層面:
這到底是不是一個bug?
在Reddit上有人認為:這不是一個bug。
雖然這個問題非常常見,但它並不算是一個bug,而是一個在調試時不可以忽略的點。
就是這個觀點,激起了千層浪花,許多人都認為他忽略了問題的關鍵所在。
這不是產生偽隨機數的問題,也不是numpy的問題,問題的核心是在於PyTorch中的DataLoader的實現
對於包含隨機轉換的數據載入pipeline,這意味著每個worker都將選擇「相同」的轉換。而現在NN中的許多數據載入pipeline,都使用某種類型的隨機轉換來進行數據增強,所以不重新初始化可能是一個預設。
另一位網友也表示這個bug其實是在預設程序下運行才出現的,應該向更多用戶指出來。
並且95%以上的Pytorch庫受此困擾,也絕不是危言聳聽。
有人就分享出了自己此前的慘痛經歷:
我認識到這一點是之前跑了許多進程來創建數據集時,然而發現其中一半的數據是重復的,之後花了很長的時間才發現哪裡出了問題。
也有用戶補充說,如果 95% 以上的用戶使用時出現錯誤,那麼代碼就是錯的。
順便一提,這提供了Karpathy定律的另一個例子:即使你搞砸了一些非常基本代碼,「neural nets want to work」。
你有踩過PyTorch的坑嗎?
如上的bug並不是偶然,隨著用PyTorch的人越來越多,被發現的bug也就越來越多,某乎上還有PyTorch的坑之總結,被瀏覽量高達49w。
其中從向量、函數到model.train(),無論是真bug還是自己出了bug,大家的血淚史還真的是各有千秋。
所以,關於PyTorch你可以分享的經驗血淚史嗎?
歡迎評論區留言討論~
參考鏈接:
[1]https://tanelp.github.io/posts/a-bug-that-plagues-thousands-of-open-source-ml-projects/
[2]https://www.reddit.com/r/MachineLearning/comments/mocpgj/p_using_pytorch_numpy_a_bug_that_plagues/
[3]https://www.hu.com/question/67209417/answer/866488638
— 完 —
④ pytorch不同語言速度比較
pytorch不同語言速度比較:
1、編程語言不同:pytorch採用python語言。編程實際是C語言做底層和C++做介面torch採用lua語言。編程實際是C語言做底層和lua語言做介面的深度學習庫。
2、依賴庫:pytorch可調用python強大的第三方庫,比如opencvtorch可調用lua庫函數,目前lua庫函數沒有python多。
3、效率:python的debug功能比lua強大很多,所以pytorch效率大於torch。
⑤ 2.如圖二,pytorch安裝之後沒有顯示python的環境
1、首先進入Anaconda Prompt 環境。
2、其次檢查是否安裝成功: 在彈出的窗口有 (base) 則安裝成功後創建虛擬環境。
3、最後輸入conda create -n pytorch python即可顯示安裝環境。
⑥ pytorch、顯卡、顯卡驅動、cuda版本是如何對應的
做深度學習的小夥伴們可能都會在安裝環境的時候經常遇到的cuda版本驅動版本以及和顯卡是如何對應的,經常搞得特別糊塗,官網沒有直接提供他們的對應關系,導致我們在升級顯卡的時候發現原來的軟體環境不兼容,出現各種奇奇怪怪的問題。
NVIDIA系列顯卡做深度學習,需要在宿主機安裝顯卡驅動(driver),需要在docker中安裝英偉達的科學計算庫(cuda),在python中安裝深度學習庫(我主要用pytorch),driver依賴顯卡,cuda依賴driver,pytorch依賴cuda,於是就會有一些版本依賴問題.
最近我在將顯卡從GTX2070升級到GTX3090的時候,發現自己原來pytorch程序總會在.cuda()命令卡十分鍾左右,並且還有其他異常。後來才知到GTX3090需要cuda11以上的版本才能正常運行,而我使用的python庫pytorch為0.4.1,cuda版本為9.0,受制於當前pytorch版本,無法使用最新的顯卡,那麼這個是如何看出來的呢?又如何解決?
英偉達官網(參考 cuda-GPUs )並沒有給出一個直接的關聯關系,而是給了一個 Compute Capability ,讓人摸不到頭腦。
實際上這是一個中間數據,還需要另外一張表才能找到和cuda的對應關系,經過搜索我在維基網路(參考 CUDA ) 找到了答案。
同時,cuda對顯卡驅動也有特定的要求,從英偉達官網(參考 cuda )繼續尋找答案
我們再查詢深度學習庫(參考 pytorch )的版本對cuda的依賴關系
綜合以上分析,GTX3090需要Compute Capability在8.6以上的cuda,而滿足這個要求的cuda又只有11.0以上的版本。而cuda11版本又需要版本號>450的顯卡驅動。
其實,從表中我們也可以分析出,cuda和顯卡驅動基本都是向下兼容的,意味著我安裝最新的cuda和顯卡驅動,基本上可以支持以前的幾乎所有顯卡。當然了,代價是需要更新我們的python深度學習庫比如pytorch,tensorflow等指定cuda的版本,否則可能會出現一些兼容問題。
所以最後我安裝最新驅動,重新構建了docker,用英偉達官方提供的cuda11的作為基礎鏡像,參考github Docker-Ubuntu-Unity-noVNC , 更新pytorch0.4.1到1.7.1,甚至升級python版本3.5為3.9,索性兼容性還不錯,只做了少量改動,問題完美解決。
https://developer.nvidia.com/cuda-GPUs
https://en.wikipedia.org/wiki/CUDA
https://pytorch.org
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
⑦ Python中數據模塊化你不容錯過的庫!
1、Scikit Learn
在沉溺於「深度學習」之前,所有人都應當從使用Scikit Learn來開啟自己的機器學習之旅。Scikit Learn有六大主要模塊,如下:
· 數據預處理
· 維度縮減
· 數據回歸
· 數據分類
· 數據聚類分析
· 模型選擇
只要能用好Scikit Learn,就已經算得上是一名優秀的數據科學家了。
2、Tensorflow
Tensorflow是由谷歌推出的開源機器學習庫。它最受歡迎的功能便是Tensorboard上的數據流圖像。
Tensorboard是一個基於網頁自動生成的儀表盤,它將數據學習流和結果進行了可視化處理,這一功能對於排錯和展示都十分有用。
3、PyTorch
PyTorch是由Facebook發布的一個開源庫,用作Python的公用機器學習框架。與Tensorflow相比,PyTorch的語句更加適用於Python。正因此,學習使用PyTorch也更加容易。
作為一個專注於深度學習的庫,PyTorch還具有非常豐富的應用程序介面函數和內置函數來協助數據科學家更加快捷地訓練自己的深度學習模型。
更多Python知識,請關注Python視頻教程!
⑧ pytorch python 什麼關系
PyTorch is a deep learning framework that puts Python first.
We are in an early-release Beta. Expect some adventures.
Python[1] (英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/), 是一種面向對象的解釋型計算機程序設計語言,由荷蘭人Guido van Rossum於1989年發明,第一個公開發行版發行於1991年。
Python是純粹的自由軟體, 源代碼和解釋器CPython遵循 GPL(GNU General Public License)協議[2] 。Python語法簡潔清晰,特色之一是強制用空白符(white space)作為語句縮進。
Python具有豐富和強大的庫。它常被昵稱為膠水語言,能夠把用其他語言製作的各種模塊(尤其是C/C++)很輕松地聯結在一起。常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),然後對其中[3] 有特別要求的部分,用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而後封裝為Python可以調用的擴展類庫。需要注意的是在您使用擴展類庫時可能需要考慮平台問題,某些可能不提供跨平台的實現。
7月20日,IEEE發布2017年編程語言排行榜:Python高居首位[4] 。
⑨ pytorch和python的區別是什麼
PyTorch是一個開源的Python機器學習庫,基於Torch,用於自然語言處理等應用程序。
2017年1月,由Facebook人工智慧研究院(FAIR)基於Torch推出了PyTorch。它是一個基於Python的可續計算包,提供兩個高級功能:1、具有強大的GPU加速的張量計算(如NumPy)。2、包含自動求導系統的深度神經網路。
PyTorch 是一個基於 Python 的科學計算包,主要定位兩類人群:
NumPy 的替代品,可以利用 GPU 的性能進行計算。
深度學習研究平台擁有足夠的靈活性和速度
要介紹PyTorch之前,不得不說一下Torch。Torch是一個有大量機器學習演算法支持的科學計算框架,是一個與Numpy類似的張量(Tensor) 操作庫,其特點是特別靈活,但因其採用了小眾的編程語言是Lua,所以流行度不高,這也就有了PyTorch的出現。所以其實Torch是 PyTorch的前身,它們的底層語言相同,只是使用了不同的上層包裝語言。
python就是一門編程語言
⑩ pytorch是什麼
PyTorch是一個開源的Python機器學習庫,基於Torch,用於自然語言處理等應用程序。
2017年1月,由Facebook人工智慧研究院(FAIR)基於Torch推出了PyTorch。它是一個基於Python的可續計算包,提供兩個高級功能:
1、具有強大的GPU加速的張量計算(如NumPy);
2、包含自動求導系統的深度神經網路。
優點
1、PyTorch是相當簡潔且高效快速的框架;
2、設計追求最少的封裝;
3、設計符合人類思維,它讓用戶盡可能地專注於實現自己的想法;
4、與google的Tensorflow類似,FAIR的支持足以確保PyTorch獲得持續的開發更新;
5、PyTorch作者親自維護的論壇供用戶交流和求教問題;
6、入門簡單。
(10)python引入pytorch擴展閱讀:
模塊
1、Autograd模塊
PyTorch使用一種稱為自動微分的方法。記錄器記錄已執行的操作,然後向後重播以計算梯度。當構建神經網路以通過計算前向傳遞參數的微分來節省一個時間時,此方法特別強大。
2、Optim模塊
torch.optim是實現用於構建神經網路的各種優化演算法的模塊。大多數常用方法已受支持,因此無需從頭開始構建它們。
3、nn模塊
PyTorch autograd使定義計算圖和獲取梯度變得容易,但是原始的autograd對於定義復雜的神經網路而言可能太低了。這是nn模塊可以提供幫助的地方。