版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第02Python無論是在機(jī)器學(xué)習(xí)還是深度學(xué)習(xí)中,Python已經(jīng)成為主導(dǎo)性的編程語言。而且,現(xiàn)在許多主流的深度學(xué)習(xí)框架,例如PyTorch、TensorFlow也都是基于Python。這門課主要是圍繞“理論+實(shí)戰(zhàn)”同時(shí)進(jìn)行的,所以本文,我將重點(diǎn)介紹深度學(xué)習(xí)中Python的必備知識點(diǎn)。Python是一種面向?qū)ο蟮慕忉屝陀?jì)算機(jī)程序設(shè)計(jì)語言,由荷蘭人GuidovanRossum于1989年發(fā)明,第一個(gè)公開版于1991年。Python具有豐富和強(qiáng)大的庫。它常被昵稱為膠水語言,能夠把用其他語言制作的各種模塊(尤其 為什么人工智能、深度學(xué)習(xí)會選擇Python呢?一方面是因?yàn)镻ython作為一門解釋型語言,入門簡單、容易上手。另一方面是因?yàn)镻ython的開發(fā)效率高,Python有很多庫很方便做人工智能,比如Numpy、Scipy做數(shù)值計(jì)算的,Sklearn做機(jī)器學(xué)習(xí)的,Matplotlib將數(shù)據(jù)可視化的,等等??偟膩碚f,Python既容易上手,又是功能強(qiáng)大的編程語言。按照《Python學(xué)習(xí)手冊》作者的說法,Python可以從支持航空航天器系統(tǒng)的開發(fā)到小游戲開發(fā)的幾乎所有的其實(shí),人工智能的算法的底層還是由C/C++編寫的,因?yàn)槭怯?jì)算密集型,需要非常精的優(yōu)化,還需要GPU、硬件之類的接口,這些都只有C/C++能做到。Python實(shí)際上是實(shí)現(xiàn)API調(diào)用的功能,例如所有的深度學(xué)習(xí)框架PyTorch、TensorFlow等,底層都是由C/C++編寫的。由于Python是頂層高級語言,它的缺點(diǎn)就是運(yùn)行速度慢,但是這絲毫不影響Python的普及。如今,在GPU加速的前提下,Python的運(yùn)行速度已經(jīng)很快了。在眾多因素影響下,Python成為了人工智能的最主要的編程語言。下面這來自TIOBE編程社區(qū)Top10編程語言TIOBE指數(shù)走勢(2002-如今,Python已經(jīng)僅次于Java、C、C++之后,第四,且呈逐年上升的趨勢。而在人工智能領(lǐng)域,Python是當(dāng)之無愧的第一。Python目前有兩個(gè)版本:2和3。人工智能領(lǐng)域主要使用Python3,建議安裝Python3版python--FunctionPython中的函數(shù)以關(guān)鍵字def來定義,例如:defifx>return'positive'elifx<0:returnreturnforxin[-1,0,1]:#Prints"negative","zero",上面呢,就是定義一個(gè)sign函數(shù),根據(jù)輸入x與0的大小關(guān)系,返回positive、或zerodefgreet(name,ifO,%s!'%o,%s'%greet('Will')#Printsgreet('Tony',o,#PrintsO,Pythonclass#definit(self,=#Createaninstance#Instancedefgreet(self,ifO,%s!'%o,%s'%g=Greeter('Will')#ConstructaninstanceoftheGreeter#Callaninstancemethod;prints#Callaninstancemethod;printso,O,initselfselfnamePython中類的繼承也非常簡單,最基本的繼承方式就是定義類的時(shí)候把父類往括號里一放就class"""ClassKnowinheritencedfromGreeter"""defmeet(self):print('Nicetomeetk=Know('Will')#ConstructaninstanceoftheGreater#Callaninstancemethod;printso,#Callaninstancemethod;prints"Nicetomeet深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)模型包含了大量的矩陣相乘運(yùn)算,如果使用for循環(huán),運(yùn)算速度會大大降低。Python中可以使用dot函數(shù)進(jìn)行向量化矩陣運(yùn)算,來提高網(wǎng)絡(luò)運(yùn)算效率。我們用一個(gè)例子來比較說明for循環(huán)和矩陣運(yùn)算各自的時(shí)間差異性。importnumpyasimporta=b=tic=foriinc+=a[i]*b[i]toc=time.time()print("forloop:"+str(1000*(toc-tic))+c=tic=c=np.dot(a,b)toc=time.time()print("Vectorized:"+str(1000*(toc-tic))+>>>>for>>>>顯然,兩個(gè)矩陣相乘,使用or循環(huán)需要大約00ms,而使用向量化矩陣運(yùn)算僅僅需要大約1ms,效率得到了極大的提升。值得一提的是,神經(jīng)網(wǎng)絡(luò)模型有的矩陣維度非常大,這時(shí)候,使用矩陣直接相乘會更大程度地提高速度。所以,在構(gòu)建神經(jīng)網(wǎng)絡(luò)模型時(shí),我們應(yīng)該盡量使用矩陣相乘運(yùn)算,減少for循環(huán)的使用。順便提一下,為了加快深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)運(yùn)算速度,可以使用比CPU運(yùn)算能力更強(qiáng)大的GPU。事實(shí)上,GPU和CPU都有并行指令(ParallelizationInstructions),稱為SingleInstructionMultipleData(SIMD)。SIMD是單指令多數(shù)據(jù)流,能夠多個(gè)操作數(shù),并把它們打包在大型寄存器的一組指令集。SIMD向量化矩陣運(yùn)算更快的原因。相比而言,GPU的SIMD要比CPU更強(qiáng)大。Python中的廣播(Broadcasting)機(jī)制非常強(qiáng)大,在神經(jīng)網(wǎng)絡(luò)模型矩陣運(yùn)算中非常有用。廣讓所有輸入數(shù)組都向其中shape最長的數(shù)組看齊,shape中不足的部分都通過面加1輸出數(shù)組的shape是輸入數(shù)組shape如果輸入數(shù)組的某個(gè)軸和輸出數(shù)組的對應(yīng)軸的長度相同或者其長度為1時(shí),這個(gè)數(shù)組能夠當(dāng)輸入數(shù)組的某個(gè)軸的長度為1如果覺得上面幾條機(jī)制比較晦澀難懂,沒關(guān)系。簡而言之,就是Python白了。是不是覺得廣播機(jī)制很方便?這也正是Python強(qiáng)大的地方,能夠幫我們省很多事。值得一提的是,在Python程序中為了保證矩陣運(yùn)算正確,可以使用reshape函數(shù)設(shè)定矩陣a=上面這條語句生成的向量維度既不是(6,1),也不是(1,6),而是(6,)。它既不是列向量也不是行向量,而是rank1aray。rank1array的特點(diǎn)是它的轉(zhuǎn)置還是它本身。這種定義實(shí)際應(yīng)用中可能會帶來一些問題,如果我們想要定義行向量或者列向量的話,最好這樣寫:a=a=另外,我們還可以使用assert語句對向量或者數(shù)組維度進(jìn)行判斷。如果與給定的維度不同,則程序在此處停止運(yùn)行。assertassert(a==MatplotlibPythonmatplotlib.pyplotplotMatplotlib2Dimportnumpyasimportmatplotlib.pyplotas#Computethexandycoordinatesx=np.arange(0,4*np.pi,0.1)y=np.sin(x)#Plotthepointsusingplt.plot(x,#Youmustcallplt.show()tomakegraphics我們也可以在一片中同時(shí)畫多個(gè)曲線importnumpyasimportmatplotlib.pyplotas#Computethexandycoordinatesx=np.arange(0,4*np.pi,0.1)y_sin=np.sin(x)y_cos=#Plotthepointsusingmatplotlibplt.plot(x,y_sin)plt.plot(x,y_cos)plt.xlabel('xaxislabel')plt.ylabel('yaxislabel')plt.title('SineandCosine')plt.legend(['Sine','Cosine'])最后介紹一下如何顯示importnumpyasfromscipy.miscimportimread,imresizeimportmatplotlib.pyplotaspltimg=imread('./dog.jpg')img_tinted=img*[0.9,0.9,0.8]#Showtheoriginalimageplt.subplot(2,1,1)#Showthe
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 贛南師范大學(xué)《古生物與地層學(xué)含實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 加工中心的編程教學(xué)課件
- 七年級道德與法治上冊第一單元成長的節(jié)拍第一課中學(xué)時(shí)代第二課時(shí)誤區(qū)警示新人教版
- 三年級數(shù)學(xué)上冊6乘法單元概述和課時(shí)安排素材北師大版
- 三年級科學(xué)上冊7土壤的保護(hù)教案冀教版
- 三年級科學(xué)下冊第三單元固體和液體1認(rèn)識固體教案蘇教版1
- 《知識社會學(xué)》課件
- 高二物理期末模擬卷(A卷)【測試范圍:必修第一、二、三冊及選擇性必修第一冊第1章】(考試版A3)(浙江專用)
- 《前言關(guān)鍵點(diǎn)》課件
- 初中數(shù)學(xué)等腰直角三角形添加輔助線三垂直構(gòu)建K字型全等專項(xiàng)練習(xí)題1(附答案詳解)
- 《食品營銷學(xué)》期末考試復(fù)習(xí)題庫(含答案)
- 超星爾雅學(xué)習(xí)通《形象管理(南開大學(xué))》2024章節(jié)測試答案
- 數(shù)字電子技術(shù)教學(xué)省公開課一等獎全國示范課微課金獎?wù)n件
- JJF(機(jī)械) 1019-2018 有載分接開關(guān)測試儀校準(zhǔn)規(guī)范
- 2024年度-呼吸道傳染病防治
- 我國個(gè)人信息保護(hù)立法的完善分析
- 中儲糧在線測評真題及答案
- 給警察培訓(xùn)急救知識課件
- 少年宮管理制度多篇培訓(xùn)
- 銷售秒殺方案
- 第1課+古代亞非(教學(xué)設(shè)計(jì))【中職專用】《世界歷史》(高教版2023基礎(chǔ)模塊)
評論
0/150
提交評論