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