版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 遂溪縣第一中學(xué)2025屆高三英語(yǔ)第一學(xué)期期末監(jiān)測(cè)模擬試題含解析
- 黑龍江省哈爾濱市第24中學(xué)2025屆高二數(shù)學(xué)第一學(xué)期期末考試試題含解析
- 2025屆上海市北蔡高中數(shù)學(xué)高三第一學(xué)期期末達(dá)標(biāo)檢測(cè)模擬試題含解析
- 2025屆湖北省武漢第二中學(xué)英語(yǔ)高三第一學(xué)期期末聯(lián)考模擬試題含解析
- 山西省渾源縣第七中學(xué)校2025屆數(shù)學(xué)高一上期末預(yù)測(cè)試題含解析
- 2025屆江蘇省蘇州市吳江汾湖中學(xué)高二數(shù)學(xué)第一學(xué)期期末達(dá)標(biāo)檢測(cè)模擬試題含解析
- 2025屆廣東省揭陽(yáng)市第三中學(xué)高三生物第一學(xué)期期末統(tǒng)考試題含解析
- 2025屆廣東省廣州市番禺區(qū)廣東第二師范學(xué)院番禺附中生物高三上期末教學(xué)質(zhì)量檢測(cè)模擬試題含解析
- 2025屆廣東省南海中學(xué)等七校聯(lián)合體生物高一上期末統(tǒng)考試題含解析
- 2025屆百校聯(lián)盟高一生物第一學(xué)期期末達(dá)標(biāo)檢測(cè)模擬試題含解析
- 肺源性心臟病護(hù)理
- 無(wú)錫市2023-2024學(xué)年高三上學(xué)期期中教學(xué)質(zhì)量調(diào)研測(cè)試數(shù)學(xué)試卷(原卷版)
- 貴州省黔東南苗族侗族自治州岑鞏縣第二小學(xué)2023-2024學(xué)年五年級(jí)上學(xué)期11月期中英語(yǔ)試題
- DL/T 5610-2021 輸電網(wǎng)規(guī)劃設(shè)計(jì)規(guī)程
- 人音版小學(xué)五年級(jí)音樂(lè)上冊(cè)全冊(cè)教案【完整版】
- (6.1)-第二章追求遠(yuǎn)大理想 堅(jiān)定崇高信念
- 網(wǎng)絡(luò)食品安全抽樣檢驗(yàn)工作規(guī)程
- 孤獨(dú)的小螃蟹
- 鋼結(jié)構(gòu)工程投標(biāo)書(shū)范本
- 《中國(guó)華電集團(tuán)公司火電項(xiàng)目前期工作管理辦法》
- 初中數(shù)學(xué)角的認(rèn)識(shí)名師優(yōu)質(zhì)課獲獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件
評(píng)論
0/150
提交評(píng)論