【问题标题】:Custom connections between layers Keras层之间的自定义连接 Keras
【发布时间】:2018-04-26 04:46:49
【问题描述】:

我想使用 keras 和 Python 在层之间手动定义神经网络中的连接。默认情况下,所有神经元对之间都有连接。我需要如下图所示进行连接。

如何在 Keras 中完成?

【问题讨论】:

标签: python neural-network keras keras-layer


【解决方案1】:

您可以使用功能 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)

【讨论】:

  • 这就是我在 6 小时内寻找的答案,因为你节省了我很多时间
猜你喜欢
  • 1970-01-01
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多