Keras構建神經網路的3種方法

2021-10-25 20:23:49 字數 1933 閱讀 6613

有三種方法可以在tensorflow中構建keras模型:

sequential api:當你試圖使用單個輸入、輸出和層分支構建簡單模型時,sequential api是最好的方法。對於想快速學習的新手來說,這是乙個很好的選擇。

functional api:函式api是構建keras模型最流行的方法。它可以完成sequential api所能做的一切。此外,它允許多個輸入、多個輸出、分支和層共享。它是一種簡潔易用的方法,並且仍然允許很好的定製靈活性。

模型子類化:模型子類化是為需要完全控制模型、層和訓練過程的高階開發人員設計的。你需要建立乙個定義模型的自定義類,而且你可能不需要它來執行日常任務。但是,如果你是乙個有實驗需求的研究人員,那麼模型子類化可能是最好的選擇,因為它會給你所有你需要的靈活性。

在sequential api中,我們需要tf.keras.models模組。我們可以簡單地將下面的所有層作為乙個單獨的層來傳遞。如你所見,這很簡單。

model = sequential([

flatten(input_shape=(28, 28)),

dense(256,『relu』),

dense(10, 「softmax」),

])對於functional api,我們需要單獨定義我們的輸入。然後,我們需要建立乙個輸出物件,同時建立所有層,這些層相互關聯並與輸出相關聯。最後,我們建立乙個接受輸入和輸出作為引數的模型物件。**仍然非常乾淨,但是我們在functional api中有了更大的靈活性。

inputs = input(shape=(28, 28))

x = flatten()(inputs)

x = dense(256, 「relu」)(x)

outputs = dense(10, 「softmax」)(x)

model = model(inputs=inputs, outputs=outputs, name=「mnist_model」)

讓我們繼續討論模型子類化。在模型子類化中,我們從建立乙個擴充套件類基於tf.keras.model 。模型子類化有兩個關鍵功能:

init__函式充當建構函式。多虧了__init,我們可以初始化模型的屬性(例如,layer)。super呼叫父建構函式( tf.keras.model中的建構函式)self用於引用例項屬性。

call function是在定義層之後定義操作的地方。

為了使用模型子類化來構建同乙個模型,我們需要編寫更多的**,如下所示:

class custommodel(tf.keras.model):

definit(self, **kwargs):

super(custommodel, self).init(**kwargs)

self.layer_1 = flatten()

self.layer_2 = dense(256, 「relu」)

self.layer_3 = dense(10, 「softmax」)

def call(self, inputs):

x = self.layer_1(inputs)

x = self.layer_2(x)

x = self.layer_3(x)

return x

model = custommodel(name=『mnist_model』)

現在你可以用三種不同的方法建立同乙個模型,你可以選擇其中任何乙個,構建模型,並執行下面的**。

model.compile(optimizer=『adam』,

loss=『sparse_categorical_crossentropy』,

metrics=[『accuracy』])

model.fit(x=x_train,y=y_train, epochs=10)

model.evaluate(x_test, y_test)

參考:

Keras 神經網路構建學習

keras 是簡單易用 高效強大的神經網路庫,底層計算可基於 tensorflow 或 theano 平台實現。本篇將詳細介紹 keras 模型構建的具體步驟。通過閱讀本篇內容您將了解到 keras 模型構建的主要步驟 keras 神經網路搭建的一般過程 keras 模型構建主要包括5個步驟 定義 ...

keras 構建卷積神經網路人臉識別

olivettifaces是紐約大學的乙個比較小的人臉庫,由40個人的400張構成,即每個人的人臉為10張。每張的灰度級為8位,每個畫素的灰度大小位於0 255之間,每張大小為64 64。大小是1190 942,一共有20 20張人臉,故每張人臉大小是 1190 20 942 20 即57 47 2...

神經網路的keras實現

keras是構建在tensorflow基礎上的python第三方庫,專門用於神經網路的構建與計算,同時還整合了scikit learn庫,使得可以在神經網路的構建中運用機器學習的方法。現在就用keras來構建之前構建過的神經網路。實現 首先匯入所需要的包 from keras.models impo...