Machine learning 两个Keras层之间的自定义(卷积)连接

Machine learning 两个Keras层之间的自定义(卷积)连接,machine-learning,neural-network,keras,conv-neural-network,Machine Learning,Neural Network,Keras,Conv Neural Network,我正在寻找一种可能性来定义两个Keras层之间的自定义互连。我想用一个自定义的和不同数量的输入来模拟卷积行为。下面所示的简化示例说明了我的需求。输入0、1和2应组合成一个单元。输入3应单独考虑,4和5也应合并考虑。在本例中,输入组0、1、2、3和4、5始终组合在一个神经元中。进一步的步骤是将几个神经元组合起来,例如将输入0、1和2输入到两个隐藏层神经元中 X Output layer / | \ X X X Hidden layer

我正在寻找一种可能性来定义两个Keras层之间的自定义互连。我想用一个自定义的和不同数量的输入来模拟卷积行为。下面所示的简化示例说明了我的需求。输入0、1和2应组合成一个单元。输入3应单独考虑,4和5也应合并考虑。在本例中,输入组0、1、2、3和4、5始终组合在一个神经元中。进一步的步骤是将几个神经元组合起来,例如将输入0、1和2输入到两个隐藏层神经元中

       X        Output layer
    /  |  \
  X    X   X    Hidden layer
 /|\   |  / \
X X X  X  X X   Input layer
0 1 2  3  4 5
我没有在Keras文档中找到这个问题的直接解决方案,或者可能我看错了地方。卷积层总是期望有固定数量的输入值。这个问题对我来说似乎并不复杂。我没有提供任何代码,因为还没有值得分享的东西。但是,当我找到一个有效的解决方案时,我会用代码更新这个问题

也许是这个问题的背景。我将分类值拆分为热向量。例如,一个具有三种表现形式的分类值“a”、“b”、“c”分为1、0、0、0、1、0和0、0、1。这些值与其他值一起输入神经网络。导致上述示例网络X的输入1、0、0、X、X、0、1、0、X、X、X和0、0、1、X、X、X的任意值。当我现在有一个完全连接的层时,网络释放了输入0、1和2实际上来自同一个变量的信息,应该一起考虑。通过上述体系结构,我希望确保网络在将这些值与其他变量关联之前将它们考虑在一起。我希望这是有意义的,如果没有请让我知道为什么

更新:
答案提供了一个很好的代码示例。

您正在寻找的是Keras

您可以为网络定义三个输入,然后根据自己的喜好在此基础上构建模型

from keras.layers import Input, Dense, Conv1D, Concatenate
x = Input(shape=(None, 3))
y = Input(shape=(None, 1))
z = Input(shape=(None, 2))
conv_x = Conv1D(...)(x)
conv_y = Conv1D(...)(y)
conv_z = Conv1D(...)(z)
conv = Concatenate(axis=-1)([conv_x, conv_y, conv_z])

你要找的是Keras

您可以为网络定义三个输入,然后根据自己的喜好在此基础上构建模型

from keras.layers import Input, Dense, Conv1D, Concatenate
x = Input(shape=(None, 3))
y = Input(shape=(None, 1))
z = Input(shape=(None, 2))
conv_x = Conv1D(...)(x)
conv_y = Conv1D(...)(y)
conv_z = Conv1D(...)(z)
conv = Concatenate(axis=-1)([conv_x, conv_y, conv_z])

好吧,这正是我想要的。非常感谢。好的,这正是我想要的。非常感谢你。