卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

keras如何對(duì)全連接層神經(jīng)元裁剪 如何更好地調(diào)試神經(jīng)網(wǎng)絡(luò)?

如何更好地調(diào)試神經(jīng)網(wǎng)絡(luò)?神經(jīng)網(wǎng)絡(luò)的設(shè)置參數(shù)所不同的是程序的調(diào)試只不過(guò)它的錯(cuò)誤類型不會(huì)是運(yùn)行錯(cuò)誤并不一定的錯(cuò)誤是網(wǎng)絡(luò)絕對(duì)無(wú)法收攝可是對(duì)此比較有經(jīng)驗(yàn)的人來(lái)說(shuō),這反到好些如何處理,不要一行一行一欄代碼。假如

如何更好地調(diào)試神經(jīng)網(wǎng)絡(luò)?

神經(jīng)網(wǎng)絡(luò)的設(shè)置參數(shù)所不同的是程序的調(diào)試

只不過(guò)它的錯(cuò)誤類型不會(huì)是運(yùn)行錯(cuò)誤

并不一定的錯(cuò)誤是網(wǎng)絡(luò)絕對(duì)無(wú)法收攝

可是對(duì)此比較有經(jīng)驗(yàn)的人來(lái)說(shuō),這反到好些如何處理,不要一行一行一欄代碼。

假如比較早就再次出現(xiàn)了NAN,此時(shí)此刻的問(wèn)題本質(zhì)我們的學(xué)習(xí)率過(guò)熱,將當(dāng)前學(xué)習(xí)率調(diào)好后三分之一原先訓(xùn)練,如果沒(méi)有不行的話,再繼續(xù)調(diào)小。

或是遇見(jiàn)網(wǎng)絡(luò)繼續(xù)去學(xué)習(xí)的問(wèn)題。而現(xiàn)在可能會(huì)又出現(xiàn)了過(guò)擬合,我們必須降低樣本數(shù)量,如果依舊過(guò)擬合,那你是需要去確認(rèn)樣本和標(biāo)簽是否需要隨機(jī)。

調(diào)參作為訓(xùn)練神經(jīng)網(wǎng)絡(luò)最重要的是也最常見(jiàn)的三步。初始的權(quán)值很重要的是,稍微大一點(diǎn)的幅度會(huì)有一點(diǎn)好一點(diǎn),不過(guò)太大又會(huì)影起NAN問(wèn)題,因此得把握好尺度,也有是在訓(xùn)練結(jié)束后之前數(shù)次減小去學(xué)習(xí)率,看是否能對(duì)效果給予進(jìn)階。

系統(tǒng)的總結(jié)下

調(diào)試神經(jīng)網(wǎng)絡(luò)整體而言要比第一項(xiàng)程序花費(fèi)的精力大量,而且它動(dòng)不動(dòng)愛(ài)會(huì)因?yàn)楦鱾€(gè)方面的因素而使得網(wǎng)絡(luò)的終于效果不好,所以不需要慢慢地慢慢,漸漸清楚,最終達(dá)到在又出現(xiàn)問(wèn)題的時(shí)候能明白了是什么導(dǎo)致的。

左右吧觀點(diǎn)若有不足,還請(qǐng)指教

如何使用Keras函數(shù)式API進(jìn)行深度學(xué)習(xí)?

也可以那樣的話說(shuō),Keras Python庫(kù)讓創(chuàng)建家族深度學(xué)習(xí)模型變地飛速且簡(jiǎn)單啊。

序列API讓你都能夠?yàn)榇蠖鄶?shù)問(wèn)題逐層創(chuàng)建模型。當(dāng)然了它又是有局限性的,那是它并不能不能讓你創(chuàng)建角色強(qiáng)大共享層或具有多個(gè)輸入輸入或輸出的模型。

Keras中的的函數(shù)式API是創(chuàng)建模型的另一種,它更具更多的靈活性,除了創(chuàng)建家族更為復(fù)雜的模型。

在本教程中,你將知道一點(diǎn)該如何用Keras中更突出靈活性的函數(shù)式API來(lái)符號(hào)表示深度學(xué)習(xí)模型。

完成本教程后,你將明白了:

序列API和函數(shù)式API之間的區(qū)別。

使用方法函數(shù)式API定義很簡(jiǎn)單多層感知器、卷積神經(jīng)網(wǎng)絡(luò)在內(nèi)循環(huán)神經(jīng)網(wǎng)絡(luò)模型。

要如何定義方法具高互相訪問(wèn)層和多個(gè)輸入輸出的無(wú)比復(fù)雜的模型。

教程簡(jiǎn)要說(shuō)明

本教程范圍涵蓋六部分內(nèi)容,共有是:

序列模型

函數(shù)式模型

3.標(biāo)準(zhǔn)網(wǎng)絡(luò)模型

4.互相訪問(wèn)層模型

5.多個(gè)輸入和輸出模型

6.最佳實(shí)踐

序列模型

Keras能提供了一個(gè)序列模型API。

這是一種創(chuàng)建角色深度學(xué)習(xí)模型的方法,其中創(chuàng)建了一個(gè)序列類的實(shí)例,還創(chuàng)建了模型層并將其去添加到其中。

的或,可以將層定義方法為數(shù)組的形式并傳達(dá)給序列:

fromimportSequential

acrossimportDense

modelSequential([Dense(2,input_dim1),Dense(1)])

別外,層確實(shí)是也可以縱斷面去添加的:

modelSequential()

(Dense(2,input_dim1))

(Dense(1))

是可以那樣說(shuō),在大多數(shù)情況下,序列模型API是非常適合我用于變更土地性質(zhì)深度學(xué)習(xí)模型的,但而也具備一定的局限性。

例如,定義兩個(gè)可能具有多個(gè)相同輸入源、且能能生成多個(gè)輸出目標(biāo)或賞識(shí)層的模型,并不是一件簡(jiǎn)單的事情。

Keras函數(shù)式API能提供了符號(hào)表示模型的一種最為身形靈活的。

尤其是,它讓你都能夠定義方法更具多個(gè)然后輸入或作為輸出以及互相訪問(wèn)層的模型。不止如此,它還令你都能夠符號(hào)表示特定的非循環(huán)網(wǎng)絡(luò)圖。

模型是實(shí)際創(chuàng)建角色層的實(shí)例并將它們就地復(fù)等位基因相互連接來(lái)定義的,然后再定義一個(gè)Model,指定你層以及模型的輸入和輸出。

接下來(lái)的了解一下Keras函數(shù)式API的三個(gè)獨(dú)特的地方方面:

定義輸入

與序列模型有所不同的是,你必須創(chuàng)建家族并定義另一個(gè)的的的再輸入層來(lái)指定你輸入數(shù)據(jù)的形狀。

再輸入層接受一個(gè)形狀參數(shù),即一個(gè)元組,它它表示的是輸入數(shù)據(jù)的維數(shù)。。

如果鍵入數(shù)據(jù)是一維的,例如多層感知器,那你這個(gè)形狀可以都能夠必須明確地為在訓(xùn)練網(wǎng)絡(luò)過(guò)程中并且空間切割數(shù)據(jù)時(shí)不使用的小批量大小的形狀他留空間。并且,這個(gè)形狀數(shù)組老是用還有一個(gè)維度(2)定義,的或:

aroundimportInput

visibleInput(shape(2,))

連接到層

模型中的層是成對(duì)連接上的。

這是是從在定義每個(gè)新層時(shí)指定輸入的出處成功的。這里在用括號(hào)可以表示法,以備萬(wàn)一在創(chuàng)建層之后,就委托了無(wú)論是當(dāng)前層輸入出處的層。

讓我們用一個(gè)簡(jiǎn)短的例子來(lái)那說(shuō)明這一點(diǎn)。我們是可以如本所述現(xiàn)在這樣修改然后輸入層,后再創(chuàng)建一個(gè)封印層才是密密麻麻的層,只得到依附輸入輸入層的輸入。

hiddenDense(2)(visible)

注意一點(diǎn)可以說(shuō)性,在創(chuàng)建尖銳層之后,將輸入層的輸出以及輸入輸入與密集地的隱藏地層接受連接上。

應(yīng)該是這種能將各個(gè)層依順序連接上過(guò)來(lái),使使得函數(shù)式API本身靈活性。比如,你可以看到開(kāi)始符號(hào)表示層的預(yù)備圖表是多么很容易。

創(chuàng)建角色模型

在創(chuàng)建了所有模型層并將它們連接到在一起之后,你就可以定義方法模型了。

與序列API一般,模型肯定是你可以通過(guò)系統(tǒng)的總結(jié)、模型擬合、評(píng)估和利用接受分析和預(yù)測(cè)的東西。

Keras能提供了一個(gè)Model類,你是可以在用它從已創(chuàng)建戰(zhàn)隊(duì)的層中創(chuàng)建戰(zhàn)隊(duì)一個(gè)模型。要求那是你沒(méi)法指定你輸入和輸出層。的或:

outsideimportModel

modelModel(inputsvisible,outputshidden)

要是我們巳經(jīng)所了解Keras函數(shù)式API的所有關(guān)鍵是部分,那就接下來(lái)我們就來(lái)定義方法一套有所不同的模型并就其做一些實(shí)踐。

每個(gè)示例大都可想執(zhí)行的,可展示更多結(jié)構(gòu)并創(chuàng)建戰(zhàn)隊(duì)圖表的簡(jiǎn)圖。這樣做的好處是,你這個(gè)可以很清楚地所知你所定義法的是什么。

我只希望,在將來(lái)你打算使用函數(shù)式API定義自己的模型時(shí),這些示例也能為你需要提供模板。

當(dāng)結(jié)束建議使用函數(shù)式API時(shí),好是先去打聽(tīng)一下一些標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)模型是該如何進(jìn)行定義方法的。

在本節(jié)中,我們將定義,定義一個(gè)很簡(jiǎn)單多層感知器、卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)。

這些例子將為再理解接下來(lái)無(wú)比具體點(diǎn)的示例奠定基礎(chǔ)。

多層感知器

在本節(jié)中,我們定義了一個(gè)應(yīng)用于一元分類(binaryclassification)的多層感知器模型。

該模型有10個(gè)輸入、3個(gè)三個(gè)更具10、20和10個(gè)神經(jīng)元的封印層、這些一個(gè)只有一個(gè)輸出的輸出層。在每個(gè)隱層中都使用了糾正線性激活函數(shù)(Rectifiedlinearactivationfunctions),而在輸出來(lái)層中可以使用了一個(gè)sigmoid激活函數(shù),以應(yīng)用于一元分類。

#MultilayerPerceptron

returningkeras.utilsimportplot_model

visibleInput(shape(10,))

hidden1Dense(10,activationrelu)(visible)

hidden2Dense(20,activationrelu)(hidden1)

hidden3Dense(10,activationrelu)(hidden2)

inputDense(1,activationsigmoid)(hidden3)

modelModel(inputsvisible,outputsoutput)

#summarizelayers

print(())

#plotgraph

plot_model(model,can_filemultilayer_perceptron_)

不運(yùn)行該示例,展示展示出該網(wǎng)絡(luò)的結(jié)構(gòu):

該模型圖的一個(gè)簡(jiǎn)圖也被創(chuàng)建戰(zhàn)隊(duì)并需要保存到文件中。

多層感知器網(wǎng)絡(luò)圖

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

在本節(jié)中,我們將符號(hào)表示一個(gè)主要是用于圖像分類的卷積神經(jīng)網(wǎng)絡(luò)。

該模型收得到一個(gè)規(guī)格為64×64的純黑圖像充當(dāng)然后輸入,接著有一個(gè)卷積層和池化層的序列才是特征提取器,而后是一個(gè)用以解釋什么特征的完全連接上層,在內(nèi)個(gè)主要用于兩個(gè)類預(yù)估的sigmoid激活函數(shù)。

#ConvolutionalNeuralNetwork

outsideimportConv2D

outsideimportMaxPooling2D

visibleInput(shape(64,64,1))

conv1Conv2D(32,kernel_size4,activationrelu)(visible)

pool1MaxPooling2D(pool_size(2,2))(conv1)

conv2Conv2D(16,kernel_size4,activationrelu)(pool1)

pool2MaxPooling2D(pool_size(2,2))(conv2)

hidden1 Dense(10,activationrelu)(pool2)

inputDense(1,activationsigmoid)(hidden1)

plot_model(model,can_fileconvolutional_neural_)

運(yùn)行程序該示例,總結(jié)模型層:

該模型圖的簡(jiǎn)圖也被修改并保存到到文件。

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

循環(huán)神經(jīng)網(wǎng)絡(luò)

在本節(jié)中,我們將定義,定義一個(gè)作用于序列分類的長(zhǎng)短型記憶循環(huán)神經(jīng)網(wǎng)絡(luò)。

該模型只希望以一個(gè)特征的100個(gè)時(shí)間步長(zhǎng)另外然后輸入。該模型有一個(gè)不能的LSTM封印層以從序列中其他提取特征,然后是一個(gè)全部連接到層用以解釋什么LSTM輸出來(lái),接下來(lái)的事情是一個(gè)應(yīng)用于并且二元分析預(yù)測(cè)的輸出層。

#RecurrentNeuralNetwork

outsideimportLSTM

visibleInput(shape(100,1))

hidden1LSTM(10)(visible)

hidden2Dense(10,activationrelu)(hidden1)

inputsDense(1,activationsigmoid)(hidden2)

plot_model(model,need_filerecurrent_neural_)

不運(yùn)行該示例,總結(jié)模型層。

循環(huán)神經(jīng)網(wǎng)絡(luò)圖

多個(gè)層也可以共享來(lái)自一個(gè)層的輸出。

的或,可能會(huì)有多個(gè)差別的特征抽取層是無(wú)論是于同一個(gè)輸入的,也可以有多個(gè)層是作用于請(qǐng)解釋來(lái)自一個(gè)特征匹配層的輸出的。

我們來(lái)看下這兩個(gè)例子。

寬帶共享輸入層

在本節(jié)中,我們定義了具高完全不同大小內(nèi)核的多個(gè)卷積層來(lái)請(qǐng)解釋圖像輸入。

該模型常規(guī)大小為64×64像素的黑白圖像。有兩個(gè)CNN特征提取子模型鏈接共享該然后輸入最先內(nèi)核大小為4,第二個(gè)內(nèi)核大小為8。這些特征提取子模型的輸出被壓解成向量,再連接到一個(gè)長(zhǎng)向量中,并傳達(dá)消息到一個(gè)徹底再連接層,以備萬(wàn)一在終于作為輸出層接受二3元分類之前接受解釋。

#SharedInputLayer

returningimportFlatten

returningimportconcatenate

#inputlayer

#firstfeatureextractor

flat1 Flatten()(pool1)

#secondfeatureextractor

conv2Conv2D(16,kernel_size8,activationrelu)(visible)

flat2Flatten()(pool2)

#mergefeatureextractors

mergeconcatenate([flat1,flat2])

#interpretationlayer

hidden1 Dense(10,activationrelu)(merge)

#predictioninput

plot_model(model,did_fileshared_input_)

具備寬帶共享輸入輸入的神經(jīng)網(wǎng)絡(luò)圖

共享圖像特征提取層

在本節(jié)中,我們將用兩個(gè)左行子模型來(lái)解釋什么LSTM特性提取器的輸出,以通過(guò)序列分類。

該模型的輸入是一個(gè)特征的100個(gè)時(shí)間步長(zhǎng)。一個(gè)具高10個(gè)記憶單元的LSTM層以講解該序列。另一個(gè)解釋什么模型是個(gè)淺的單徹底連接上層,第二是一個(gè)深度3層模型。兩個(gè)請(qǐng)解釋模型的輸出都被連接到到一個(gè)長(zhǎng)向量中,訊息傳遞到作為輸出層用以接受3元預(yù)測(cè)。

#Shared Feature Extraction Layer

#defineinput

#featureextraction

extract1LSTM(10)(visible)

#firstinterpretationmodel

interp1 Dense(10,activationrelu)(extract1)

#secondinterpretationmodel

interp11Dense(10,activationrelu)(extract1)

interp12Dense(20,activationrelu)(interp11)

interp13Dense(10,activationrelu)(interp12)

#mergeinterpretation

mergeconcatenate([normalize1,preprocessing13])

#output

outputDense(1,activationsigmoid)(merge)

plot_model(model,did_fileshared_feature_)

互相訪問(wèn)特征匹配層的神經(jīng)網(wǎng)絡(luò)圖

函數(shù)式API也可作用于開(kāi)發(fā)具有多個(gè)輸入輸入的更緊張的模型,可能更具差別的形式。它也是可以作用于變更土地性質(zhì)有一種多個(gè)輸出的模型。

我們將在本節(jié)中打開(kāi)系統(tǒng)每個(gè)示例。

多鍵入模型

我們將旗下一個(gè)圖像分類模型,它將兩個(gè)版本的圖像充當(dāng)再輸入,每個(gè)版本的大小差別。詳細(xì)是黑白64×64版本和彩色32×32版本。分開(kāi)來(lái)的特征提取CNN模型在每個(gè)模型上不運(yùn)行,然后再將兩個(gè)模型的結(jié)果連接上起來(lái)接受解釋和結(jié)果預(yù)測(cè)。

請(qǐng)?jiān)僮⒁?,在?chuàng)建Model()實(shí)例時(shí),我們將六個(gè)輸入層定義為數(shù)組。具體看不勝感激:

modelModel(inputs[visible1,visible2],outputsoutput)

求全部的示例追加所示:

#MultipleInputs

#firstinputmodel

visible1Input(shape(64,64,1))

conv11Conv2D(32,kernel_size4,activationrelu)(visible1)

pool11MaxPooling2D(pool_size(2,2))(conv11)

conv12Conv2D(16,kernel_size4,activationrelu)(pool11)

pool12MaxPooling2D(pool_size(2,2))(conv12)

flat1Flatten()(pool12)

#secondinputmodel

visible2Input(shape(32,32,3))

conv21Conv2D(32,kernel_size4,activationrelu)(visible2)

pool21MaxPooling2D(pool_size(2,2))(conv21)

conv22Conv2D(16,kernel_size4,activationrelu)(pool21)

pool22MaxPooling2D(pool_size(2,2))(conv22)

flat2Flatten()(pool22)

#mergeinputmodels

#interpretationmodel

plot_model(model,want_filemultiple_)

該模型圖的簡(jiǎn)圖被修改并保存到到文件。

具備多個(gè)輸入輸入的神經(jīng)網(wǎng)絡(luò)圖

多作為輸出模型

在本節(jié)中,我們將開(kāi)發(fā)完畢出一種也可以參與兩種不同類型預(yù)測(cè)的模型。計(jì)算變量一個(gè)特征的100時(shí)間步長(zhǎng)的再輸入序列,該模型將對(duì)序列接受分類并輸出具有不同長(zhǎng)度的新序列。

LSTM層回答輸入輸入序列,并直接返回每個(gè)時(shí)間步長(zhǎng)的追蹤狀態(tài)。第一個(gè)輸出模型創(chuàng)建一個(gè)邏輯塊LSTM,講解特征,并參與一元預(yù)測(cè)。第二個(gè)輸出模型使用相同的輸出層對(duì)每個(gè)輸入輸入時(shí)間步長(zhǎng)參與實(shí)值預(yù)估。

#MultipleOutputs

aroundimportTimeDistributed

extractLSTM(10,return_sequencesTrue)(visible)

#classificationoutput

class11LSTM(10)(extract)

class12Dense(10,activationrelu)(class11)

input1Dense(1,activationsigmoid)(class12)

#sequenceoutput

parameters2TimeDistributed(Dense(1,activationlinear))(extract)

modelModel(inputsvisible,outputs[inputs1,output2])

plot_model(model,did_filemultiple_)

具高多個(gè)輸出的神經(jīng)網(wǎng)絡(luò)圖

在本節(jié)中,我會(huì)給你一些建議,以便在定義自己的模型時(shí)充分利用函數(shù)式API。

同一的變量名:對(duì)輸入輸入(可以說(shuō))、控制輸出層(輸出來(lái)),甚至還是封印層(hidden1,hidden2)可以使用相同的變量名稱。它將能增強(qiáng)正確的地將它們聯(lián)系聯(lián)系站了起來(lái)。

重新回顧層總結(jié):要堅(jiān)持再歸納模型學(xué)習(xí)總結(jié)并回憶一下層輸出,以確保全模型按預(yù)期那樣直接連接在一起。

再次回顧圖表簡(jiǎn)圖:只要能堅(jiān)持創(chuàng)建戰(zhàn)隊(duì)模型圖的簡(jiǎn)圖,并對(duì)其采取并且重新回顧,以確保所有的東西都按照你的意愿放在旁邊在一起。

命名原則層:你這個(gè)可以為在回顧曾經(jīng)模型圖的總結(jié)和簡(jiǎn)圖時(shí)使用的層分配名稱?;蛘撸篋ense(1,命名hidden1)。

分開(kāi)來(lái)的子模型:決定分離子模型的開(kāi)發(fā),并在后來(lái)將子模型組合在一起。