Pytorch簡介
Pytorch底層是Torch框架,Torch框架是一個科學(xué)計算框架,擁有一個與Numpy類似的張量操作庫。非常靈活,但是它的語言是Lua,比較小眾,因此沒有廣泛流行。
后來開發(fā)團隊在Torch的基礎(chǔ)上包裝了一層Python的Api,使得我們可以通過Python來進行調(diào)用。它是由Facebook的人工智能小組開發(fā)維護的,目前在業(yè)內(nèi)也非常流行,尤其是學(xué)術(shù)界,幾乎清一色的Pytorch。它擁有兩個最大的優(yōu)點,一個是動態(tài)網(wǎng)絡(luò),像是TensorFlow等框架定義出來的神經(jīng)網(wǎng)絡(luò)是靜態(tài)的,一旦寫死不能輕易改變。但是Pytorch我們可以零延遲地改變?nèi)魏紊窠?jīng)網(wǎng)絡(luò)。第二個有點是具有強大的GPU加速計算的工具,Pytorch的GPU加速非常好用。
另外Pytorch的語法更加簡潔規(guī)范,更加Pythonic,學(xué)習曲線也更平穩(wěn)一些。寫出來的代碼更加容易理解,更適合初學(xué)者。
當然由于誕生的時間還短,并且在工業(yè)界的普及度還不如TensorFlow,所以它也有一些短板,比如一些底層的文檔不夠完善,一些功能欠缺等等。在我個人的學(xué)習和使用當中,我的體驗非常好,因此如果你沒有學(xué)過深度學(xué)習的框架的話,推薦使用它作為你的第一門框架。
云服務(wù)器既然是深度學(xué)習的框架,那么最好是能夠擁有GPU環(huán)境。但是對于我們大多數(shù)人而言,GPU環(huán)境并不是一個容易的事情。比如我是Mac黨,本身的機器就沒有N卡,外接也不方便。當然沒有GPU用CPU硬肝也是可以的,不過發(fā)熱很嚴重,對電腦也有損傷。所以,最好的辦法就是租借網(wǎng)上的GPU云服務(wù)器或者是云服務(wù)。
查看原文
因為我是特邀用戶,所以我拿到了內(nèi)部優(yōu)惠的大師碼,如果要購買其他GPU云服務(wù)器的話,可以在付款的時候輸入我的大師碼2323,可以再享受9折優(yōu)惠。
當然你也可以購買裝好環(huán)境的Notebook,或者是按照時常購買。Notebook好處是預(yù)裝了各種環(huán)境,上手可用,但是缺點是不支持定制化,一些操作不太方便。畢竟有了云服務(wù)器可以自己搭建Notebook,但是Notebook并不支持服務(wù)器的功能。
如果你想要使用其他云服務(wù)器平臺,可以查看我之前的文章
想要學(xué)深度學(xué)習但是沒有GPU?我?guī)湍阏伊艘恍┎诲e的平臺
環(huán)境配置為了防止一些小白租借了機器不會用,接下來提供一下配置環(huán)境的詳細教程(基于滴滴云)。如果你用的別家的服務(wù)器,由于環(huán)境不一定完全相同,所以可能并不一定適用,只能當做參考。
總之我們整個流程是:安裝Python3,安裝jupyter,配置jupyter遠程訪問,安裝Pytorch。
這些是明面上的流程,如果機器環(huán)境不健全,還會有一些隱藏流程。比如說普通的Linux環(huán)境需要配置apt-get,還需要下載git,wget等常用工具。如果沒有cuda驅(qū)動的話,還需要自己安裝cuda配置。如果其中的步驟出現(xiàn)了問題,還需要分析問題的原因解決問題。所以說配置環(huán)境說起來簡單,但是實際操作的時候問題并不少。
安裝Python3
yuminstallpython36
安裝jupyternotebook
sudopip3installipythonjupyternotebooklab
設(shè)置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
當我們用完了云服務(wù)器之后,要記得刪除機器。但由于平臺機器數(shù)量有限,根據(jù)當前平臺的設(shè)置,關(guān)機之后依然會為用戶保留資源,但是前提是需要付費。如果你是按時租的服務(wù)器顯然不能接受自己沒在使用還需要付費。針對這個問題,我們可以通過快照來解決。我們在關(guān)機之前先創(chuàng)建快照:
然后刪除云服務(wù)器,下次重新創(chuàng)建服務(wù)器的時候選擇從快照創(chuàng)建。這樣下次創(chuàng)建的機器還可以保留當前的配置和數(shù)據(jù),而且也不需要扣費了。如果你嫌麻煩的話,還可以加我的微信聯(lián)系我,我?guī)湍阏业焦ぷ魅藛T加入關(guān)機免扣費的白名單。
我們用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,當中的元素內(nèi)容是不可保證的。
rand創(chuàng)建一個隨機初始化的數(shù)組:
ones和zeros創(chuàng)建全是0或者全是1的數(shù)組:
我們可以傳入類型指定元素的類型
我們也可以通過現(xiàn)成的數(shù)組創(chuàng)建tensor:
這些創(chuàng)建函數(shù)都有對應(yīng)的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轉(zhuǎn)化成Python的數(shù)組:
函數(shù)功能
Tensor(*sizes)基礎(chǔ)構(gòu)造函數(shù)
tensor(data,)類似np.array的構(gòu)造函數(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的時候不僅可以指定它們的類型,還可以指定它們存放的設(shè)備。比如是CPU還是GPU。當然前期我們暫時用不到這點,只需要記得即可。
總結(jié)這是Pytorch的第一篇文章,我們簡單了解了一下這個框架,以及它當中tensor這個數(shù)據(jù)結(jié)構(gòu)。簡單來說,我們可以用常用的Numpy去類比它?;旧螻umpy當中有的功能它都有,它還有一些自己特性Numpy沒有的api。但不管怎么說,萬變不離其宗,tensor的用處就是為了方便我們處理數(shù)據(jù)的。
關(guān)于Pytorch中tensor的用法還有很多,實在是沒有辦法在一篇文章當中窮盡,所以這里只是簡單介紹,具體的用法將會放在下一篇文章當中,讓我們下周再見吧。
以上內(nèi)容為大家介紹了Pytorch入門之配置云服務(wù)器環(huán)境,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機構(gòu):千鋒教育。