簡體   English   中英

如何實現以非全連接層作為最后一層的神經網絡?

[英]How to implement a neural network with a not-fully-connected layer as the final layer?

我想實現一個帶有輸入層、兩個密集隱藏層和一個非密集 output 層的神經網絡。 下圖顯示了一個玩具示例。 第一個隱藏層有三個神經元,第二個和最后四個神經元,但第二個和第三個之間只有四個連接。

網絡架構

我想使用 Keras functional API。我該如何實現呢? 我應該手動將丟失的重量設置為 0 嗎? 我會開始如下:

input=keras.layers.Input(...)
hidden1=keras.layers.Dense(3, activation="..")(input)
hidden2=keras.layers.Dense(3, activation="..")(hidden1)

但后來我不知道如何進行。

最后一層實際上是兩個獨立的Dense層,每個層有 2 個神經元並連接到前一層的不同神經元。 因此,您可以簡單地將倒數第二層的神經元分開,並將其傳遞給兩個不同的層:

input = keras.layers.Input(shape=(3,))
hidden1 = keras.layers.Dense(3)(input)
hidden2 = keras.layers.Dense(2)(hidden1)
hidden2_n1 = keras.layers.Lambda(lambda x: x[:,0:1])(hidden2)  # take the first neuron
hidden2_n2 = keras.layers.Lambda(lambda x: x[:,1:])(hidden2)   # take the second neuron
output1 = keras.layers.Dense(2)(hidden2_n1)
output2 = keras.layers.Dense(2)(hidden2_n2)
output = keras.layers.concatenate([output1, output2])  # optional: concatenate the layers to have a single output layer

model = keras.models.Model(input, output)

tf.keras或更新版本的kerasLambda您可以簡單地編寫:

output1 = keras.layers.Dense(2)(hidden2[:,0:1])
output2 = keras.layers.Dense(2)(hidden2[:,1:])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM