簡體   English   中英

Keras 層之間的自定義連接

[英]Custom connections between layers Keras

我想使用 keras 和 Python 在層之間的神經網絡中手動定義連接。 默認情況下,所有神經元對之間都有連接。 我需要建立如下圖所示的連接。

所需的架構

我怎樣才能在 Keras 中完成?

您可以使用函數式 API 模型並將四個不同的組分開:

from keras.models import Model
from keras.layers import Dense, Input, Concatenate, Lambda

inputTensor = Input((8,))

首先,我們可以使用 lambda 層將這個輸入分成四部分:

group1 = Lambda(lambda x: x[:,:2], output_shape=((2,)))(inputTensor)
group2 = Lambda(lambda x: x[:,2:4], output_shape=((2,)))(inputTensor)
group3 = Lambda(lambda x: x[:,4:6], output_shape=((2,)))(inputTensor)
group4 = Lambda(lambda x: x[:,6:], output_shape=((2,)))(inputTensor)

現在我們跟蹤網絡:

#second layer in your image
group1 = Dense(1)(group1)
group2 = Dense(1)(group2)
group3 = Dense(1)(group3)   
group4 = Dense(1)(group4)

在我們連接最后一層之前,我們連接上面的四個張量:

outputTensor = Concatenate()([group1,group2,group3,group4])

最后一層:

outputTensor = Dense(2)(outputTensor)

#create the model:
model = Model(inputTensor,outputTensor)

當心偏見 如果您希望這些圖層中的任何一個都沒有偏差,請使用use_bias=False


舊答案:向后

對不起,我第一次回答時看到你的圖片倒退了。 我把它留在這里只是因為它已經完成了......

from keras.models import Model
from keras.layers import Dense, Input, Concatenate

inputTensor = Input((2,))

#four groups of layers, all of them taking the same input tensor
group1 = Dense(1)(inputTensor)
group2 = Dense(1)(inputTensor)
group3 = Dense(1)(inputTensor)   
group4 = Dense(1)(inputTensor)

#the next layer in each group takes the output of the previous layers
group1 = Dense(2)(group1)
group2 = Dense(2)(group2)
group3 = Dense(2)(group3)
group4 = Dense(2)(group4)

#now we join the results in a single tensor again:
outputTensor = Concatenate()([group1,group2,group3,group4])

#create the model:
model = Model(inputTensor,outputTensor)

暫無
暫無

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

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