[英]Custom connections between layers 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.