小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

keras中最常用深度學(xué)習(xí)的API

 Levy_X 2017-11-14


摘要:本文作者通過幾個小例子帶你了解強大的深度學(xué)習(xí)API,有了這些知識,建立屬于自己的深度學(xué)習(xí)程序?qū)⒉怀蓡栴}!

眾所周知,利用Keras-Python庫可以快速、輕松地創(chuàng)建屬于自己的深度學(xué)習(xí)的模型,今天我們就來介紹一些我們常用的API函數(shù)。


序貫?zāi)P停⊿equential)API允許你為大多數(shù)問題逐層的創(chuàng)建模型。它的局限性在于它不允許你創(chuàng)建共享層或者是具有多個輸入或輸出的模型。

Keras中的API函數(shù)是創(chuàng)建更多靈活性模型的替代方法,其中也包括創(chuàng)建更復(fù)雜的模型。


在本篇博客中,你將發(fā)現(xiàn)如何在Keras中使用靈活的API函數(shù)來定義深度學(xué)習(xí)模型。


閱讀完成后,你將知道:

1.連續(xù)的API和API函數(shù)之間的區(qū)別。

2.如何使用API函數(shù)定義簡單的多層感知器,卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)模型。

3.如何使用共享層和多個輸入和輸出定義更復(fù)雜的模型。


OK,讓我們開始吧。


教程概述

本教程分為6部分:

1.Keras序貫?zāi)P汀?/p>

2.Keras功能函數(shù)模型。

3.標準網(wǎng)絡(luò)模型。

4.共享層模型。

5.多個輸入和輸出模型。

6.最佳練習(xí)。



1.Keras序貫?zāi)P?/strong>


Keras提供了一個Sequential模型的API。


這是創(chuàng)建深度學(xué)習(xí)模型的一種方法,其中創(chuàng)建了Sequential類的實例,并創(chuàng)建了模型圖層并將其添加其中。


例如,可以將層定義并傳遞給Sequential作為數(shù)組:



層也可以分段添加:



序貫?zāi)P偷腁PI在大多數(shù)情況下非常適合開發(fā)深度學(xué)習(xí)模型,但也有一些限制。例如,它不能定義具有多個不同輸入源的模型,因為那樣會產(chǎn)生多個輸出目標。


2.Keras功能函數(shù)模型


Keras功能API為定義模型提供了更靈活的方式。

它允許你定義多個輸入或輸出的模型以及可以共享圖層的模型。除此之外,它還允許你定義臨時的非循環(huán)網(wǎng)絡(luò)圖。


模型通過創(chuàng)建層的實例并將它們直接彼此成對連接來定義,然后定義一個模型,該模型的指定層作為模型的輸入和輸出。


我們來看看Keras功能API的三個獨特方面:


2.1定義輸入


與Sequential模型不同,你必須創(chuàng)建并定義一個獨立的輸入層,該層指定輸入數(shù)據(jù)的形狀。


輸入層采用一個模型參數(shù),它是一個代表輸入數(shù)據(jù)維度的元組。


當(dāng)輸入數(shù)據(jù)為一維時,例如對于多層感知器,該模型必須明確留出在訓(xùn)練網(wǎng)絡(luò)分割數(shù)據(jù)時所使用的小批量大小的形狀。因此,模型元組始終以掛起的最后一維(2)定義,例如:

from keras.layers import Input

visible = Input(shape=(2,))


2.2連接層


模型中的層可以成對連接,這是通過在定義每個新圖層時指定輸入來自哪里。使用括號符號,使得在創(chuàng)建圖層之后,指定從當(dāng)前圖層的輸入到即將到達的圖層。


讓我們用一個簡單的例子來說明這一點。我們可以創(chuàng)建如上所述的輸入層,然后創(chuàng)建一個隱藏層,作為僅從輸入層接收輸入的密集層。



正是通過這種連接層的方法,使功能API更具有靈活性。你可以看到開始定義ad-hoc圖層的特殊圖形變得多么的容易。


2.3創(chuàng)建模型


創(chuàng)建模型所需的所有圖層并將其連接在一起后,接下來必須定義模型。與Sequential API一樣,該模型是你可以概述、擬合、評估和使用做出預(yù)測。


Keras提供了一個Model類,你可以使用它從創(chuàng)建的圖層時創(chuàng)建模型。它要求你需要指定輸入和輸出層。例如:



既然現(xiàn)在我們知道了Keras功能API的所有關(guān)鍵部分,我們通過定義一套不同的模型實踐一下我們的學(xué)習(xí)成果。


以下每個示例都是可執(zhí)行的,并打印結(jié)構(gòu)并創(chuàng)建圖表。我建議為你自己的模型做這個,這樣可以讓你清楚你的定義。


我希望這些示例可以為你在以后使用功能API定義自己的模型時提供了模板。


3.標準網(wǎng)絡(luò)模型


當(dāng)開始使用功能API時,最好先了解一些關(guān)于標準神經(jīng)網(wǎng)絡(luò)模型的定義。在本節(jié)中,我們將介紹定義一個簡單的多層感知器,卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)。


這些例子將為以后理解更詳細的例子奠定基礎(chǔ)。


3.1多層感知器


在本節(jié)中,我們?yōu)槎M制分類定義了一個多層Perceptron模型。該模型有10個輸入,3個隱藏層,10個神經(jīng)元,輸出層有1個輸出。在每個隱藏層中使用整流線性激活函數(shù),在輸出層使用S形激活函數(shù)進行二進制分類。



運行示例打印網(wǎng)絡(luò)的結(jié)構(gòu):



模型圖的創(chuàng)建并保存到文件:



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


在本節(jié)中,我們將定義一個用于圖像分類的卷積神經(jīng)網(wǎng)絡(luò)。


該模型接收黑白64×64圖像作為輸入,然后兩個卷積層和匯集層的序列作為特征提取器,隨后是完全連接的層來解釋特征,并且輸出層是具有S形激活函數(shù)。



運行示例:



模型圖的圖創(chuàng)建并保存到文件:



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


在本節(jié)中,我們將定義一個LSTM循環(huán)神經(jīng)網(wǎng)絡(luò)用于序列分類。


該模型是100個時間步長作為輸入,該模型具有單個LSTM隱藏層,用于從序列中提取特征,然后是完全連接的層以解釋LSTM輸出,隨后是用于進行二進制預(yù)測的輸出層。



運行示例總結(jié)模型層。


模型圖的創(chuàng)建并保存到文件:


4.共享層模型


多層可以共享一層的輸出。

例如,可能存在來自輸入的多個不同的特征提取層,或者用于解釋特征提取層輸出的多個層。

我們來看看這兩個例子。


4.1共享輸入層


在本節(jié)中,我們使用不同大小的內(nèi)核定義多個卷積層來解釋圖像輸入。


該模型輸入采用大小為64×64像素的黑白圖像。有兩個CNN特征提取子模型共享該輸入:第一個內(nèi)核大小為4,第二個內(nèi)核大小為8。這些特征提取子模型的輸出被平坦化為向量,并連接成一個長向量,并傳遞到完全連接的層,以便在最終輸出層之前進行二進制分類。



運行示例總結(jié)模型層。



模型圖的被創(chuàng)建并保存到文件:



4.2共享特征提取層


在本節(jié)中,我們使用兩個并行子模型解釋LSTM特征提取器的輸出以進行序列分類。


模型的輸入是一個特征為100的時間步長,具有10個存儲單元的LSTM層解釋該序列。第一種解釋模式是淺層的單層完全連接層,第二種是深層的3層模型。兩個解釋模型的輸出都被連接成一個長向量,傳遞給用于進行二進制預(yù)測的輸出層。



運行示例總結(jié)模型層。



模型圖被創(chuàng)建并保存到文件。



5.多個輸入和輸出模型


功能API也可用于開發(fā)具有多個輸入的更復(fù)雜的模型,可能具有不同的模態(tài)。它也可以用于開發(fā)產(chǎn)生多個輸出的模型。

我們將在本節(jié)中查看每個示例。


5.1多輸入模型


我們將開發(fā)一個圖像分類模型,它將兩個版本的圖像作為輸入,每個版本的大小不同。具體是黑白64×64版,彩色32×32版。單獨的特征提取CNN模型在每個模型上運行,然后將兩個模型的結(jié)果連接起來進行解釋和最終預(yù)測。


請注意,在創(chuàng)建Model()實例時,我們將兩個輸入圖層定義為數(shù)組。

model = Model(inputs=[visible1, visible2], outputs=output)

完整的示例如下所示。



運行示例:



模型圖被創(chuàng)建并保存到文件。



5.2多輸出模型


在本節(jié)中,我們將開發(fā)出一種可以進行兩種不同類型預(yù)測的模型。給定一個特征的100個時間步長的輸入序列,該模型將對序列進行分類并輸出具有相同長度的新序列。


LSTM層解釋輸入序列,并返回每個時間步長的隱藏狀態(tài)。第一個輸出模型創(chuàng)建一個堆棧的LSTM,解釋特征,并進行二進制預(yù)測。第二個輸出模型使用相同的輸出層對每個輸入時間步長進行實值預(yù)測。



運行示例。



模型圖的創(chuàng)建并保存到文件:



6.最佳做法


在本節(jié)中,我給你一些提示,以便在定義自己的模型時充分利用功能性API。


  1. 一致的變量名。對輸入(可見)和輸出層(輸出)使用相同的變量名稱,甚至可以使用隱藏層(hidden1,hidden2)。它將有助于正確地將事物聯(lián)系起來。

  2. 查看圖層圖。始終打印模型摘要并查看圖層輸出,以確保模型按預(yù)期連接在一起。

  3. 查看圖表。創(chuàng)建一個模型圖的情節(jié),并檢查它,以確保所有的東西都按照你的意圖放在一起。

  4. 命名圖層。你可以為查看模型圖的名稱和繪圖時使用的圖層分配名稱。例如:Dense(1,name ='hidden1')。

  5. 單獨的子模型。考慮分開子模型的發(fā)展,并將子模型結(jié)合在一起。


作者信息


Dr. Jason Brownlee 是一名機器學(xué)習(xí)從業(yè)者,學(xué)術(shù)研究人員,致力于幫助開發(fā)人員從入門到精通機器學(xué)習(xí)。


本文由北郵@愛可可-愛生活老師推薦,阿里云云棲社區(qū)組織翻譯。


文章原標題《keras-functional-api-deep-learning》

作者:Dr.Jason Brownlee

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多