27個(gè)Python附代碼數(shù)據(jù)科學(xué)庫(kù)實(shí)戰(zhàn)案例_第1頁(yè)
27個(gè)Python附代碼數(shù)據(jù)科學(xué)庫(kù)實(shí)戰(zhàn)案例_第2頁(yè)
27個(gè)Python附代碼數(shù)據(jù)科學(xué)庫(kù)實(shí)戰(zhàn)案例_第3頁(yè)
27個(gè)Python附代碼數(shù)據(jù)科學(xué)庫(kù)實(shí)戰(zhàn)案例_第4頁(yè)
27個(gè)Python附代碼數(shù)據(jù)科學(xué)庫(kù)實(shí)戰(zhàn)案例_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

27個(gè)Python附代碼數(shù)據(jù)科學(xué)庫(kù)實(shí)戰(zhàn)案例

目錄

刖B.....................................................................................................................................................................................................1

1.Numpy.........................................................................................................................................................................................2

2.OpenCV.......................................................................................................................................................................................3

3.Scikit-image................................................................................................................................................................................4

4.PIL...............................................................................................................................................................................................6

5.Pillow...........................................................................................................................................................................................6

6.SimpleCV....................................................................................................................................................................................8

7.Mahotas.......................................................................................................................................................................................9

8.Ilastik.........................................................................................................................................................................................10

9.Scikit-Learn...............................................................................................................................................................................10

10.SciPy.........................................................................................................................................................................................12

11.NLTK.......................................................................................................................................................................................14

12.spaCy........................................................................................................................................................................................15

13.LibROSA..................................................................................................................................................................................16

14.Pandas.......................................................................................................................................................................................16

15.Matplotlib.................................................................................................................................................................................17

16.Seaborn.....................................................................................................................................................................................18

17.Orange......................................................................................................................................................................................19

18.PyBrain....................................................................................................................................................................................20

19.Milk..........................................................................................................................................................................................21

20.TensorFlow..............................................................................................................................................................................22

21.PyTorch...................................................................................................................................................................................23

22.Theano.....................................................................................................................................................................................24

23.Keras.........................................................................................................................................................................................24

24.Caffe........................................................................................................................................................................................25

25.MXNet.....................................................................................................................................................................................25

26.PaddlePaddle...........................................................................................................................................................................27

27.CNTK......................................................................................................................................................................................29

前言

為了大家能夠?qū)θ斯ぶ悄艹S玫腜ython庫(kù)有一個(gè)初步的了解,以選擇能夠滿(mǎn)足自己需求的庫(kù)

第1頁(yè)共30頁(yè)

進(jìn)行學(xué)習(xí),對(duì)目前較為常見(jiàn)的人工智能庫(kù)進(jìn)行簡(jiǎn)要全面的介紹。

人工智能

機(jī)器烈

神經(jīng)網(wǎng)絡(luò)

深度學(xué)習(xí)

1.Numpy

NumPy(NumericalPython)是Python的一個(gè)擴(kuò)展程序庫(kù),支持大量的維度數(shù)組與矩陣運(yùn)算,

此外也針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫(kù),Numpy底層使用C語(yǔ)言編寫(xiě),數(shù)組中直接存儲(chǔ)對(duì)

象,而不是存儲(chǔ)對(duì)象指針,所以其運(yùn)算效率遠(yuǎn)高于純Python代碼。我們可以在示例中對(duì)比下純

Python與使用Numpy庫(kù)在計(jì)算列表sin值的速度對(duì)比:

importnumpyasnp

importmath

importrandom

importtime

start=time.timeQ

foriinrange(lO):

list_l=list(range(l,10000))

第2頁(yè)共30頁(yè)

forjinrange(len(list_l)]:

list_l[j]=math.sin(list_l[j]]

print("使用純Python{}s".format(time.timeO-start))

start=time.timeQ

foriinrange(lO):

list_l=np.array(np.arange(l,10000))

list_l=np.sin(list_l)

print("使用Numpy用時(shí){}s【format(time.time()?start))

從如下運(yùn)行結(jié)果,可以看到使用Numpy庫(kù)的速度快于純Python編寫(xiě)的代碼:

使用純Python用時(shí)0.017444372177124023s

使用Numpy用時(shí)0.001619577407836914s

2.OpenCV

OpenCV是一個(gè)的跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),可以運(yùn)行在Linux、Windows和MacOS操作系統(tǒng)

上。它輕量級(jí)而且身效---由一系列C函數(shù)和少量C++類(lèi)構(gòu)成,同時(shí)也提供了Python接口,實(shí)

現(xiàn)了圖像處理和計(jì)算機(jī)視覺(jué)方面的很多通用算法。下面代碼嘗試使用一些簡(jiǎn)單的濾鏡,包括圖片的

平滑處理、高斯模糊等:

importnumpyasnp

importcv2ascv

frommatplotlibimportpyplotaspit

img=cv.imread('h89817032p0.png')

kernel=np.ones((5,5),np.float32]/25

dst=cv.filter2D(img,-1,kernel)

blur_l=cv.GaussianBlur(img,(5,5),0)

blur_2=cv.bilateralFilter(img,9,75,75)

plt.figure(figsize=(10,10))

,

plt.subplot(221),plt.imshow(img[:l:,::-l]),plt.title(Original')

plt.xticks([]),plt.yticks([])

pIt.subplot(222),plt.imshow(dst[:,:,::-l]),plt.title('Averaging,)

plt.xticks([]),plt.yticks([])

,

pIt.subplot(223),plt.imshow(blur_l[:,:,::-l]),plt.title('Gaussian)

plt.xticks([]),plt.yticks([])

plt.subplot(224),plt.imshow(blur_lplttitlefBilateral')

第3頁(yè)共30頁(yè)

p忙xticks([]),P忙yticks([])

plt.showQ

(Mval

OpenCV

3.Scikit-image

scikit-image是基于scipy的圖像處理庫(kù),它將圖片作為numpy數(shù)組進(jìn)行處理。例如,可以利

用scikit-image改變圖片比例,scikit-image提供了rescale>resize以及downscale」ocal_mean等函

數(shù)。

fromskimageimportdata,color,io

fromskimage.transformimportrescale,resize,downscale_local_mean

第4頁(yè)共30頁(yè)

image=color.rgb2gray(io.imread('h89817032p0.png')]

image_rescaled=rescalefimage,0.25,antialiasing=False]

image_resized=resizefimage,[image.shape[0]//4,image.shape[l]//4),

antialiasing=True)

image_downscaled=downscalejocal_mean(image,(4,3))

plt.figure(figsize=(20,20))

,,,

plt.subplot(221),plt.imshow(image/cmap=gray'),plt.title(Original)

plt.xtickstn),plt.yticks([])

plt.subplot(222),plt.imshow(image_rescaled,cmap='gray,)/plt.title(,Rescaled,)

plt.xticks([]),plt.yticks([])

plt.subplot(223),plt.imshow(image_resized,cmap='gray,),plt.title(,Resized1)

plt.xtickstn),plt.yticks([])

plt.subplot(224),plt.imshow(image_downscaled,cmap='gray,),plt.title(,Downscaled,)

plt.xtickstn),plt.yticks([])

pltshowQ

第5頁(yè)共30頁(yè)

Scikit-image

4.PIL

PythonImagingLibrary(PIL)已經(jīng)成為Python事實(shí)上的圖像處理標(biāo)準(zhǔn)庫(kù)了,這是由于,PIL

功能非常強(qiáng)大,但API卻非常簡(jiǎn)單易用。但是由于P1L僅支持到Python2.7,再加上年久失修,于

是一群志愿者在PIL的基礎(chǔ)上創(chuàng)建了兼容的版本,名字叫Pillow,支持最新Python3.x,又加入

了許多新特性,因此,我們可以跳過(guò)PIL,直接安裝使用Pillowo

5.Pillow

使用Pillow生成字母驗(yàn)證碼圖片:

第6頁(yè)共30頁(yè)

fromPILimportImage,ImageDraw,ImageFont,ImageFilter

importrandom

#隨機(jī)字母:

defrndCharQ:

returnchr(random.randint(65,90))

#隨機(jī)顏色1:

defrndColorQ:

return(random.randint(64,255],random.randintfd^255],random.randint(64,255]]

#隨機(jī)顏色2:

defrndColor2():

return(random.randint(32,127),random.randint(32,127),random.randint(32,127))

#240x60:

width=60*6

height=60*6

image=Image.newfRGB',(width,height),(255,255,255))

#創(chuàng)建Font對(duì)象:

font=ImageFont.truetypef/usr/share/fonts/wps-office/simhei.ttf,60)

#創(chuàng)建Draw對(duì)象:

draw=ImageDraw.Draw(image)

#填充每個(gè)像素:

forxinrange(width):

foryinrange(height):

draw.point((x,y),fill=rndColorO)

#輸出文字:

fortinrange(6):

draw.text((60*t+10,150),rndCharQ,font=font,fill=rndColor20)

#模糊:

image=image.filter(ImageFilter.BLUR)

image.savefcode.jpg',Jpeg')

第7頁(yè)共30頁(yè)

驗(yàn)證碼

6.SimpleCV

SimpIeCV是一個(gè)用于構(gòu)建計(jì)算機(jī)視覺(jué)應(yīng)用程序的開(kāi)源框架。使用它,可以訪(fǎng)問(wèn)高性能的計(jì)算

機(jī)視覺(jué)庫(kù),如OpenCV,而不必首先了解位深度、文件格式、顏色空間、緩沖區(qū)管理、特征值或矩

陣等術(shù)語(yǔ)。但其對(duì)于Python3的支持很差很差,在Python3.7中使用如下代碼:

fromSimpleCVimportImage,Color,Display

#loadanimagefromimgur

img=Image('/lfAeZ4n.png')

#useakeypointdetectortofindareasofinterest

feats二img.findKeypointsQ

#drawthelistofkeypoints

feats.draw(color=Color.RED)

#showtheresultingimage.

img.showQ

#applythestuffwefoundtotheimage.

output=img.applyLayersQ

#savetheresults.

output.save('juniperfeats.png3

會(huì)報(bào)如下錯(cuò)誤,因此不建議在Python3中使用:

SyntaxError:Missingparenthesesincallto'print'.Didyoumeanprintfunittest*)?

第8頁(yè)共30頁(yè)

7.Mahotas

Mahotas是一個(gè)快速計(jì)算機(jī)視覺(jué)算法庫(kù),其構(gòu)建在Numpy之上,目前擁有超過(guò)100種圖像

處理和計(jì)算機(jī)視覺(jué)功能,并在不斷增長(zhǎng)。使用Mahotas加載圖像,并對(duì)像素進(jìn)行操作:

importnumpyasnp

importmahotas

importmahotas.demos

frommahotas.thresholdingimportsoft_threshold

frommatplotlibimportpyplotaspit

fromosimportpath

f=mahotas.demos.load(,lena\as_grey=True)

f=f[128:,128:]

plt.gray()

#Showthedata:

printf'Fractionofzerosinoriginalimage:{0}n.format(np.mean(f==0]]]

plt.imshow(f)

plt.showQ

第9頁(yè)共30頁(yè)

Mahotas

8.Ilastik

Ilastik能夠給用戶(hù)提供良好的基于機(jī)器學(xué)習(xí)的生物信息圖像分析服務(wù),利用機(jī)器學(xué)習(xí)算法,輕

松地分割,分類(lèi),跟蹤和計(jì)數(shù)細(xì)胞或其他實(shí)驗(yàn)數(shù)據(jù)。大多數(shù)操作都是交互式的,并不需要機(jī)器學(xué)習(xí)

專(zhuān)業(yè)知識(shí)。

9.Scikit-Learn

Scikit-learn是針對(duì)Python編程語(yǔ)言的免費(fèi)軟件機(jī)器學(xué)習(xí)庫(kù)。它具有各種分類(lèi),回歸和聚類(lèi)

算法,包括支持向量機(jī),隨機(jī)森林,梯度提升,k均值和DBSCAN等多種機(jī)器學(xué)習(xí)算法。使用

Scikit-learn實(shí)現(xiàn)KMeans算法:

importtime

importnumpyasnp

importmatplotlib.pyplotaspit

fromsklearn.clusterimportMiniBatchKMeans,KMeans

fromsklearn.metrics.pairwiseimportpairwise_distances_argmin

第10頁(yè)共30頁(yè)

fromsklearn.datasetsimportmake_blobs

#Generatesampledata

np.random.seed(O)

batch_size=45

centers=[[1,1],[-1,-1],[1,-1]]

n_clusters=len(centers)

X,labels_true=make_blobs(n_samples=3000,centers=centers,cluster_std=0.7)

#ComputeclusteringwithMeans

,,

k_means=KMeans(init=k-means++/n_clusters=3,n_init=10)

tO二time.timeQ

k_means.fit(X)

t_batch二time.timeQ-tO

#ComputeclusteringwithMiniBatchKMeans

mbk=MiniBatchKMeans(init=,k-means++\n_clusters=3,batch_size=batch_size,

n_init=10,max_no_improvement=10,verbose=0)

tO二time.timeQ

mbk.fit(X)

t_mini_batch=time.timeQ-tO

#Plotresult

fig=plt.figure(figsize=(8,3))

fig.subplots_adjust(left=0.02,right=0.98;bottom=0.05/top=0.9]

colors=['#4EACC5',f#FF9C34\'#4E9A06']

#Wewanttohavethesamecolorsforthesameclusterfromthe

#MiniBatchKMeansandtheKMeansalgorithm.Let'spairtheclustercentersper

#closestone.

k_means_cluster_centers=k_means.cluster_centers_

order=pairwise_distances_argmin(k_means.cluster_centers_,

mbk.cluster_centers_)

mbk_means_cluster_centers=mbk.cluster_centers_[order]

k_meansjabels二pairwise_distances_argmin(X,k_means_cluster_centers)

mbk_means_labels=pairwise_distances_argmin(X,mbk_means_cluster_centers)

#KMeans

fork,colinzip(range(n_clusters],colors):

my_members=k_means_labels==k

第11頁(yè)共30頁(yè)

cluster_center=k_means_cluster_centers[k]

plt.plot(X[my_members,0],X[my_members,1],'w\

markerfacecolor=col,marker=

plt.piot(cluster_center[0],cluster_center[l],'o\markerfacecolor=col,

markeredgecolor='k\markersize=6)

plt.titlefKMeans1)

plt.xticks(O)

plt.yticks(())

pltshowQ

KMeans

10.SciPy

SciPy庫(kù)提供了許多用戶(hù)友好和高效的數(shù)值計(jì)算,如數(shù)值積分、插值、優(yōu)化、線(xiàn)性代數(shù)等。

SciPy庫(kù)定義了許多數(shù)學(xué)物理的特殊函數(shù),包括橢圓函數(shù)、貝塞爾函數(shù)、伽馬函數(shù)、貝塔函數(shù)、超

第12頁(yè)共30頁(yè)

幾何函數(shù)、拋物線(xiàn)圓柱函數(shù)等等。

fromscipyimportspecial

importmatplotlib.pyplotaspit

importnumpyasnp

defdrumhead_height(n,k,distance,angle,t):

kth_zero=special.jn_zeros(n,k)[-1]

returnnp.cos(t)*np.cos(n*angle)*special.jnfn,distance*kth_zero)

theta=np.r_[0:2*np.pi:50j]

radius二np.r_[O:l:5Oj]

x=np.array([r*np.cos(theta)forrinradius])

y=np.array([r*np.sin(theta)forrinradius]]

z=np.array([drumhead_height(l,1,r,theta,0.5]forrinradius])

fig=plt.figureQ

ax=fig.add_axes(rect=(O,0.05,0.95,0.95),projection='3d')

,

ax.plot_surface(x,y,z,rstride=l,cstride=l,cmap=RdBu_r\vmin=-0.5,vmax=0.5]

ax.set_xlabel('X')

ax.set_ylabel(,Y,)

ax.set.xticksCnp.arangef-l,1.1,0.5]]

ax.set_yticks(np.arange(-l,1.1,0.5))

ax.set.zlabelfZ')

plt.showQ

第13頁(yè)共30頁(yè)

SciPy

11.NLTK

NLTK是構(gòu)建Python程序以處理自然語(yǔ)言的庫(kù)。它為50多個(gè)語(yǔ)料庫(kù)和詞匯資源(如

WordNet)提供了易于使用的接口,以及一套用于分類(lèi)、分詞、詞干、標(biāo)記、解析和語(yǔ)義推理的文

本處理庫(kù)、工業(yè)級(jí)自然語(yǔ)言處理(NaturalLanguageProcessing,NLP)庫(kù)的包裝器。NLTK被稱(chēng)為

“awonderfultoolforteaching,andworkingin,computationallinguisticsusingPython”。

importnltk

fromnltk.corpusimporttreebank

#首次使用需要下載

nltk.download(,punkt,)

nltk.download(,averaged_perceptron_tagger,)

nltk.downloadfmaxent.ne.chunker')

nltk.downloadfwords']

nltk.downloadftreebankj

第14頁(yè)共30頁(yè)

sentence=n,,nAteighto'clockonThursdaymorningArthurdidn'tfeelverygood.""

#Tokenize

tokens=nltk.word_tokenize(sentence)

tagged=nltk.pos_tag(tokens)

#Identifynamedentities

entities二nltk.chunk.ne_chunk(tagged)

#Displayaparsetree

t=treebank.parsed_sents('wsj_0001.mrg')[0]

t.drawQ

12.spaCy

spaCy是一個(gè)免費(fèi)的開(kāi)源庫(kù),用于Python中的高級(jí)NLP。它可以用于構(gòu)建處理大量文本的

應(yīng)用程序;也可以用來(lái)構(gòu)建信息提取或自然語(yǔ)言理解系統(tǒng),或者對(duì)文本進(jìn)行預(yù)處理以進(jìn)行深度學(xué)

習(xí)。

importspacy

texts=[

"Netincomewas$9.4millioncomparedtotheprioryearof$2.7million.",

"Revenueexceededtwelvebilliondollars,withalossof$lb.",

]

nip=spacy.load(nen_core_web_sm")

fordocinnlp.pipeftexts,disable=[ntok2vec","tagger",''parser","attribute_rulern,

"lemmatizer"]):

#Dosomethingwiththedochere

print([(ent.text,ent.labeljforentindoc.ents])

nlp.pipe生成Doc對(duì)象,因此我們可以對(duì)它們進(jìn)行迭代并訪(fǎng)問(wèn)命名實(shí)體預(yù)測(cè):

[('$9.4million;'MONEY*),('theprioryear'/DATE'),C$2.7million1,'MONEY*)]

[('twelvebilliondollars',^ONEY'),Clb\rMONEY']]

第15頁(yè)共30頁(yè)

13.LibROSA

librosa是一個(gè)用于音樂(lè)和音頻分析的Python庫(kù),它提供了創(chuàng)建音樂(lè)信息檢索系統(tǒng)所必需的

功能和函數(shù)。

#Beattrackingexample

importlibrosa

#1.Getthefilepathtoanincludedaudioexample

filename=librosa.example('nutcracker3

#2.Loadtheaudioasawaveform、y'

#Storethesamplingrateas'sr'

y,sr=librosa.load(filename)

#3.Runthedefaultbeattracker

tempo,beat_frames=librosa.beat.beat_track(y=y,sr=sr)

printfEstimatedtempo:{:.2f}beatsperminute'.formatftempo))

#4.Converttheframeindicesofbeateventsintotimestamps

beat_times=librosa.frames_to_time(beat_frames,sr二sr]

14.Pandas

Pandas是一個(gè)快速、強(qiáng)大、靈活且易于使用的開(kāi)源數(shù)據(jù)分析和操作工具,Pandas可以從各

種文件格式比如CSV、JSON、SQL、MicrosoftExcel導(dǎo)入數(shù)據(jù),可以對(duì)各種數(shù)據(jù)進(jìn)行運(yùn)算操作,比

如歸并、再成形、選擇,還有數(shù)據(jù)清洗和數(shù)據(jù)加工特征。Pandas廣泛應(yīng)用在學(xué)術(shù)、金融、統(tǒng)計(jì)學(xué)

等各個(gè)數(shù)據(jù)分析領(lǐng)域。

importmatplotlib.pyplotaspit

importpandasaspd

importnumpyasnp

ts二pd.Series(np.random.randn(1000),index=pd.date_range("l/l/2000'\periods=1000))

ts=ts.cumsumQ

df=pd.DataFrame(np.random.randn(1000,4),index二ts.index,columns=list("ABCD"))

df二df.cumsumQ

df.plotQ

plt.showQ

第16頁(yè)共30頁(yè)

Pandas

15.Matplotlib

Matplotlib是Python的繪圖庫(kù),它提供了一整套和matlab相似的命令A(yù)PI,可以生成出版

質(zhì)量級(jí)別的精美圖形,Matplotlib使繪圖變得非常簡(jiǎn)單,在易用性和性能間取得了優(yōu)異的平衡。使

用Matplotlib繪制多曲線(xiàn)圖:

#plot_multi_curve.py

importnumpyasnp

importmatplotlib.pyplotaspit

x=np.linspacefO.l,2*np.pi,100)

y_l=x

y_2=np.square(x)

y_3=np.log(x)

y_4=np.sin(x)

第17頁(yè)共30頁(yè)

plt.plot(x,y_l)

plt.plot(x,y_2)

plt.plot(x,y_3)

pltplot(x,y_4)

plt.showQ

Matplotlib

16.Seaborn

Seaborn是在Matplotlib的基礎(chǔ)上進(jìn)行了更高級(jí)的API封裝的Python數(shù)據(jù)可視化庫(kù),從而使

得作圖更加容易,應(yīng)該把Seaborn視為Matplotlib的補(bǔ)充,而不是替代物。

importseabornassns

importmatplotlib.pyplotaspit

sns.set_theme(style="ticks")

第18頁(yè)共30頁(yè)

df=sns.load_dataset(penguins]

sns.pairplotfdf,hue="species”)

pltshowf)

6

so

s'5%0

e10(

E101

I

A

PO

O

q

3000-

304050601520175200225200040006000

bill_length_mmbill_depth_mmflipper_length_mmbody_mass_g

seaborn

17.Orange

Orange是一個(gè)開(kāi)源的數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)軟件,提供了一系列的數(shù)據(jù)探索、可視化、預(yù)處理

以及建模組件。Orange擁有漂亮直觀的交互式用戶(hù)界面,非常適合新手進(jìn)行探索性數(shù)據(jù)分析和可

視化展示;同時(shí)高級(jí)用戶(hù)也可以將其作為Python的一個(gè)編程模塊進(jìn)行數(shù)據(jù)操作和組件開(kāi)發(fā)。使用

pip即可安裝Orange,好評(píng)?

$pipinstallorange3

安裝完成后,在命令行輸入orange-canvas命令即可啟動(dòng)Orange圖形界面:

第19頁(yè)共30頁(yè)

$orange-canvas

啟動(dòng)完成后,即可看到Orange圖形界面,進(jìn)行各種操作。

Orange

18.PyBrain

PyBrain是Python的模塊化機(jī)器學(xué)習(xí)庫(kù)。它的目標(biāo)是為機(jī)器學(xué)習(xí)任務(wù)和各種預(yù)定義的環(huán)境提

供靈活、易于使用且強(qiáng)大的算法來(lái)測(cè)試和比較算法。PyBrain是Python-BasedReinforcement

Learning,ArtificialIntelligenceandNeuralNetworkLibrary的縮寫(xiě)。我們將利用一個(gè)簡(jiǎn)單的例子來(lái)

展示PyBrain的用法,構(gòu)建一個(gè)多層感知器(MultiLayerPerceptron,MLP)。首先,我們創(chuàng)建一個(gè)

新的前饋網(wǎng)絡(luò)對(duì)象:

frompybrain.structureimportFeedForwardNetwork

n=FeedForwardNetwork。

接下來(lái),構(gòu)建輸入、隱藏和輸出層:

frompybrain.structureimportLinearLayer,SigmoidLayer

inLayer=LinearLayer(2)

第20頁(yè)共30頁(yè)

hiddenLayer=SigmoidLayer(3)

outLayer=LinearLayer(l)

為了使用所構(gòu)建的層,必須將它們添加到網(wǎng)絡(luò)中:

n.addlnputModule(inLayer)

n.addModule(hiddenLayer)

n.addOutputModule(outLayer)

可以添加多個(gè)輸入和輸出模塊。為了向前計(jì)算和反向誤差傳播,網(wǎng)絡(luò)必須知道哪些層是輸入、

哪些層是輸出。這就需要明確確定它們應(yīng)該如何連接。為此,我們使用最常見(jiàn)的連接類(lèi)型,全連接

層,由FullConnection類(lèi)實(shí)現(xiàn):

frompybrain.structureimportFullConnection

in_to_hidden=FullConnectionfinLayer,hiddenLayer)

hidden_to_out=FullConnectionfhiddenLayer,outLayer]

與層一樣,我們必須明確地將它們添加到網(wǎng)絡(luò)中:

n.addConnection(in_to_hidden)

n.addConnection(hidden_to_out)

所有元素現(xiàn)在都已準(zhǔn)備就位,最后,我們需要調(diào)用.sortModules。方法使MLP可用:

n.sortModulesQ

這個(gè)調(diào)用會(huì)執(zhí)行一些內(nèi)部初始化,這在使用網(wǎng)絡(luò)之前是必要的。

19.Milk

MILKfMACHINELEARNINGTOOLKIT)是Python語(yǔ)言的機(jī)器學(xué)習(xí)工具包。它主要是包含許多

分類(lèi)器比如SVMS、K.NN、隨機(jī)森林以及決策樹(shù)中使用監(jiān)督分類(lèi)法,它還可執(zhí)行特征選擇,可以形

成不同的例如無(wú)監(jiān)督學(xué)習(xí)、密切關(guān)系傳播和由MILK支持的K-means聚類(lèi)等分類(lèi)系統(tǒng)。使用

MILK訓(xùn)練一個(gè)分類(lèi)器:

importnumpyasnp

importmilk

features=np.random.rand(100,10]

labels=np.zeros(lOO)

features[50:]+=.5

labels[50:]=1

learner=milk.defaultclassifierO

model=learner.trainCfeatures,labels)

#Nowyoucanusethemodelonnewexamples:

第21頁(yè)共30頁(yè)

example=np.random.rand(10]

print(model.apply(example))

example2=np.random.rand(lO)

example2+=.5

print(model.apply(example2))

20.TensorFlow

TensorFlow是一個(gè)端到端開(kāi)源機(jī)器學(xué)習(xí)平臺(tái)。它擁有一個(gè)全面而靈活的生態(tài)系統(tǒng),一般可以

將其分為T(mén)ensorFlowl.x和TensorFlow2.x,TensorFlowl.x與TensorFlow2.x的主要區(qū)別在于

TFl.x使用靜態(tài)圖而TF2.X使用EagerMode動(dòng)態(tài)圖。這里主要使用TensorFlow2.x作為示例,展

示在TensorFlow2.x中構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)(ConvolutionalNeuralNetwork,CNN)。

importtensorflowastf

fromtensorflow.kerasimportdatasets,layers,models

#數(shù)據(jù)加載

(trainjmages,trainjabels),(testjmages,testjabels)=datasets.cifarl0.1oad_dataQ

#數(shù)據(jù)預(yù)處理

trainjmages,testjmages=trainjmages/255.0,testjmages/255.0

#模型構(gòu)建

model=models.SequentialQ

model.add(layers.Conv2D(32,(3,3),activation='relu:input_shape=(32,32,3)))

model.addflayers.MaxPoolingZDffZ,2)))

model.add(layers.Conv2D(64,(3,3),activation='relu'))

model.addflayers.MaxPoolingZDffZ,2)))

model.add(layers.Conv2D(64,(3,3),activation='relu'))

model.add(layers.FlattenO)

model.add(layers.Dense(64,activation='relu'))

model.add(layers.Dense(10))

#模型編譯與訓(xùn)練

pile(optimizer=,adam\

loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),

metrics=['accuracy'])

history=model.fitftrainjmages,trainjabels,epochs=10,

validation_data=(testjmages,testjabels))

第22頁(yè)共30頁(yè)

21.PyTorch

PyTorch的前身是Torch,其底層和Torch框架一樣,但是使用Python重新寫(xiě)了很多內(nèi)

容,不僅更加靈活,支持動(dòng)態(tài)圖,而且提供了Python接口。

#導(dǎo)入庫(kù)

importtorch

fromtorchimportnn

fromtorch.utils.dataimportDataLoader

fromtorchvisionimportdatasets

fromtorchvision.transformsimportToTensor,Lambda,Compose

importmatplotlib.pyplotaspit

#模型構(gòu)建

device="cuda"iftorch.cuda.is_availableQelse"cpu"

printf'Using{}device^.formatfdevice))

#Definemodel

classNeuralNetwork(nn.Module):

def

superfNeuralNetwork,self)._init_Q

self.flatten=nn.FlattenQ

self.linear_relu_stack=nn.Sequential(

nn.Linear(28*28,512),

nn.ReLU。,

nn.Linear(512,512),

nn.ReLU。,

nn.Linear(512,10),

nn.ReLUQ

defforward(self,x]:

x=self.flatten(x)

logits=self.linear_relu_stack(x)

returnlogits

model二NeuralNetworkO.to(device)

#損失函數(shù)和優(yōu)化器

第23頁(yè)共30頁(yè)

loss.fn=nn.CrossEntropyLossO

optimizer=torch.optim.SGDfmodel.parametersO/lr=le-3)

#模型訓(xùn)練

deftrainfdataloader,model,loss_fn,optimizer):

size=len(dataloader.dataset)

forbatch,(X,y)inenumerate(dataloader):

X,y=X,to(device),y.to(device)

#Computepredictionerror

pred=model(X)

loss=loss_fn(pred,y]

#Backpropagation

optimizer.zero_gradO

loss.backwardQ

optimizer.stepQ

ifbatch%100==0:

loss,current=loss.item。,batch*len(X)

printfloss:{loss:>7f}[{current:>5d}/{size:>5d}]")

22.Theano

Theano是一個(gè)Python庫(kù),它允許定義、優(yōu)化和有效地計(jì)算涉及多維數(shù)組的數(shù)學(xué)表達(dá)式,建

在NumPy之上。在Theano中實(shí)現(xiàn)計(jì)算雅可比矩陣:

importtheano

importtheano.tensorasT

x二T.dvector('x')

y=x**2

J,updates=theano.scan(lambdai,y,x:T.grad(y[i],x),sequences=T.arange(y.shape[O]j,

non_sequences=[y,x])

f=theano.function([x],J,updates二updates]

f([4,4])

23.Keras

Keras是一個(gè)用Python編寫(xiě)的高級(jí)神經(jīng)網(wǎng)絡(luò)API,它能夠以TensorFlow,CNTK,或者

第24頁(yè)共30頁(yè)

Theano作為后端運(yùn)行。Keras的開(kāi)發(fā)重點(diǎn)是支持快速的實(shí)驗(yàn),能夠以最小的時(shí)延把想法轉(zhuǎn)換為實(shí)

驗(yàn)結(jié)果。

fromkeras.modelsimportSequential

fromkeras.layersimportDense

#模型構(gòu)建

model二SequentialQ

model.add(Dense(units=64,activation='relu\input_dim=100))

model.add(Dense(units=10/activation='softmax'))

#模型編譯與訓(xùn)練

pile(loss='categorical_cro

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論