Pytorch簡介
Pytorch底層是Torch框架,Torch框架是一個科學計算框架,擁有一個與Numpy類似的張量操作庫。非常靈活,但是它的語言是Lua,比較小眾,因此沒有廣泛流行。
后來開發(fā)團隊在Torch的基礎上包裝了一層Python的Api,使得我們可以通過Python來進行調用。它是由Facebook的人工智能小組開發(fā)維護的,目前在業(yè)內也非常流行,尤其是學術界,幾乎清一色的Pytorch。它擁有兩個最大的優(yōu)點,一個是動態(tài)網(wǎng)絡,像是TensorFlow等框架定義出來的神經(jīng)網(wǎng)絡是靜態(tài)的,一旦寫死不能輕易改變。但是Pytorch我們可以零延遲地改變任何神經(jīng)網(wǎng)絡。第二個有點是具有強大的GPU加速計算的工具,Pytorch的GPU加速非常好用。
另外Pytorch的語法更加簡潔規(guī)范,更加Pythonic,學習曲線也更平穩(wěn)一些。寫出來的代碼更加容易理解,更適合初學者。
當然由于誕生的時間還短,并且在工業(yè)界的普及度還不如TensorFlow,所以它也有一些短板,比如一些底層的文檔不夠完善,一些功能欠缺等等。在我個人的學習和使用當中,我的體驗非常好,因此如果你沒有學過深度學習的框架的話,推薦使用它作為你的第一門框架。
云服務器既然是深度學習的框架,那么最好是能夠擁有GPU環(huán)境。但是對于我們大多數(shù)人而言,GPU環(huán)境并不是一個容易的事情。比如我是Mac黨,本身的機器就沒有N卡,外接也不方便。當然沒有GPU用CPU硬肝也是可以的,不過發(fā)熱很嚴重,對電腦也有損傷。所以,最好的辦法就是租借網(wǎng)上的GPU云服務器或者是云服務。
查看原文
因為我是特邀用戶,所以我拿到了內部優(yōu)惠的大師碼,如果要購買其他GPU云服務器的話,可以在付款的時候輸入我的大師碼2323,可以再享受9折優(yōu)惠。
當然你也可以購買裝好環(huán)境的Notebook,或者是按照時常購買。Notebook好處是預裝了各種環(huán)境,上手可用,但是缺點是不支持定制化,一些操作不太方便。畢竟有了云服務器可以自己搭建Notebook,但是Notebook并不支持服務器的功能。
如果你想要使用其他云服務器平臺,可以查看我之前的文章
想要學深度學習但是沒有GPU?我?guī)湍阏伊艘恍┎诲e的平臺
環(huán)境配置為了防止一些小白租借了機器不會用,接下來提供一下配置環(huán)境的詳細教程(基于滴滴云)。如果你用的別家的服務器,由于環(huán)境不一定完全相同,所以可能并不一定適用,只能當做參考。
總之我們整個流程是:安裝Python3,安裝jupyter,配置jupyter遠程訪問,安裝Pytorch。
這些是明面上的流程,如果機器環(huán)境不健全,還會有一些隱藏流程。比如說普通的Linux環(huán)境需要配置apt-get,還需要下載git,wget等常用工具。如果沒有cuda驅動的話,還需要自己安裝cuda配置。如果其中的步驟出現(xiàn)了問題,還需要分析問題的原因解決問題。所以說配置環(huán)境說起來簡單,但是實際操作的時候問題并不少。
安裝Python3
yuminstallpython36
安裝jupyternotebook
sudopip3installipythonjupyternotebooklab
設置jupyter的密碼
jupyternotebookpassword
生成jupyternotebook的配置,這個配置默認不存在,需要我們通過這個命令來生成。
jupyternotebook--generate-config
運行之后,會返回配置文件所在的路徑:
我們用vim打開,修改其中的幾行:
c.NotebookApp.ip='0.0.0.0'
c.NotebookApp.open_browser=False
c.NotebookApp.port=8888#可以自己指定
我們需要將本地的端口和遠程進行綁定,這樣我們就可以在本地打開遠程的jupyter了。這一行代碼當中我們將本地的8899綁定了遠程的8888端口。這里的8888端口就是上面配置當中的遠程的jupyter端口。
sshdc2-user@116.85.10.225-L127.0.0.1:8899:127.0.0.1:8888
如果你喜歡的話,還可以安裝一下jupyterlab
sudopip3installjupyterlab
使用方法和notebook類似,在遠程執(zhí)行命令開啟jupyter
jupyterlab--allow-root
當我們用完了云服務器之后,要記得刪除機器。但由于平臺機器數(shù)量有限,根據(jù)當前平臺的設置,關機之后依然會為用戶保留資源,但是前提是需要付費。如果你是按時租的服務器顯然不能接受自己沒在使用還需要付費。針對這個問題,我們可以通過快照來解決。我們在關機之前先創(chuàng)建快照:
然后刪除云服務器,下次重新創(chuàng)建服務器的時候選擇從快照創(chuàng)建。這樣下次創(chuàng)建的機器還可以保留當前的配置和數(shù)據(jù),而且也不需要扣費了。如果你嫌麻煩的話,還可以加我的微信聯(lián)系我,我?guī)湍阏业焦ぷ魅藛T加入關機免扣費的白名單。
我們用pip安裝一下Pytorch和一些其他需要用到的包。安裝好了,之后,我們通過torch.cuda.is_avaiable()查看一下cuda的情況,如果輸出是True,那說明已經(jīng)安裝好了。
tensorPytorch當中很重要的一個概念就是tensor,它直譯過來是張量,TensorFlow當中的tensor也是這個意思。我們可以認為tensor是一個高維的數(shù)組。當它是0維的時候就是一個數(shù),一個標量。當它是一維的時候就是一個向量,二維的時候是一個矩陣,多維的時候是高維的數(shù)組。它和Numpy當中的數(shù)組類似,不過Tensor可以使用GPU進行加速。
我們通過torch當中的接口來初始化tensor,和Numpy當中的數(shù)組類似,它支持好幾種初始化的方式。
empty函數(shù)創(chuàng)建一個指定大小的未初始化的tensor,當中的元素內容是不可保證的。
rand創(chuàng)建一個隨機初始化的數(shù)組:
ones和zeros創(chuàng)建全是0或者全是1的數(shù)組:
我們可以傳入類型指定元素的類型
我們也可以通過現(xiàn)成的數(shù)組創(chuàng)建tensor:
這些創(chuàng)建函數(shù)都有對應的like方法,可以傳入一個已有的tensor,創(chuàng)建出一個和它一樣大小的新的tensor來。
這里只是列舉了常用的幾種,官方的api當中還有其他的幾種創(chuàng)建tensor的方式:
除此之外,tensor還支持從numpy的數(shù)組當中創(chuàng)建,我們可以利用from_numpy函數(shù)來實現(xiàn):
同理,我們也可以通過numpy函數(shù),從一個tensor得到numpy的數(shù)組:
還可以通過tolist方法將tensor轉化成Python的數(shù)組:
函數(shù)功能
Tensor(*sizes)基礎構造函數(shù)
tensor(data,)類似np.array的構造函數(shù)
ones(*sizes)全1Tensor
zeros(*sizes)全0Tensor
eye(*sizes)對角線為1,其他為0
arange(s,e,step)從s到e,步長為step
linspace(s,e,steps)從s到e,均勻切分成steps份
rand/randn(*sizes)均勻/標準分布
normal(mean,std)/uniform(from,to)正態(tài)分布/均勻分布
randperm(m)隨機排列
我們在創(chuàng)建tensor的時候不僅可以指定它們的類型,還可以指定它們存放的設備。比如是CPU還是GPU。當然前期我們暫時用不到這點,只需要記得即可。
總結這是Pytorch的第一篇文章,我們簡單了解了一下這個框架,以及它當中tensor這個數(shù)據(jù)結構。簡單來說,我們可以用常用的Numpy去類比它。基本上Numpy當中有的功能它都有,它還有一些自己特性Numpy沒有的api。但不管怎么說,萬變不離其宗,tensor的用處就是為了方便我們處理數(shù)據(jù)的。
關于Pytorch中tensor的用法還有很多,實在是沒有辦法在一篇文章當中窮盡,所以這里只是簡單介紹,具體的用法將會放在下一篇文章當中,讓我們下周再見吧。
以上內容為大家介紹了Pytorch入門之配置云服務器環(huán)境,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。