【发布时间】:2018-01-17 07:57:33
【问题描述】:
我正在寻找在两个 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)。这些与其他值一起被输入神经网络。导致上述示例网络的输入 (1, 0, 0, X, X, X)、(0, 1, 0, X, X, X) 和 (0, 0, 1, X, X, X) (X 为任意值)。当我现在有一个完全连接的层时,网络会丢失输入 0、1 和 2 实际上来自同一个变量的信息,应该一起考虑。使用上面的架构,我想确保网络在将这些值与其他变量关联之前将它们一起考虑。我希望这是有道理的,如果没有,请告诉我原因。
更新: 答案提供了一个很好的代码示例。
【问题讨论】:
标签: machine-learning neural-network keras conv-neural-network