将LSTM与具有嵌入层的并行MLP网络连接

时间:2019-08-02 12:39:02

标签: python keras deep-learning lstm

我正在尝试使用非时间相关变量的并行输入构建LSTM模型。这些变量中的一些本质上是分类的,我想创建它们通过嵌入层,然后稍后再与LSTM联接。

请在下面查看我正在尝试的代码,但出现错误“ TypeError:无法散列的类型:'list'“

  

以下是我到目前为止编写的代码。

model = Model(inputs=[cat_els, ts_inputs], outputs=out_class)
  

我的cat_els定义为(3个张量的列表):

[<tf.Tensor 'flatten_10/Reshape:0' shape=(?, ?) dtype=float32>,
 <tf.Tensor 'flatten_11/Reshape:0' shape=(?, ?) dtype=float32>,
 <tf.Tensor 'flatten_12/Reshape:0' shape=(?, ?) dtype=float32>]
  

ts_inputs定义为:

<tf.Tensor 'input_3:0' shape=(?, 6, 17) dtype=float32>
  

错误回溯

 File "<ipython-input-48-601f97a5b348>", line 31, in <module>
    model = Model(inputs=[cat_els, ts_inputs], outputs=out_class)

  File "C:\ProgramData\Anaconda3\lib\site-packages\keras\legacy\interfaces.py", line 91, in wrapper
    return func(*args, **kwargs)

  File "C:\ProgramData\Anaconda3\lib\site-packages\keras\engine\network.py", line 93, in __init__
    self._init_graph_network(*args, **kwargs)

  File "C:\ProgramData\Anaconda3\lib\site-packages\keras\engine\network.py", line 147, in _init_graph_network
    if len(set(self.inputs)) != len(self.inputs):

TypeError: unhashable type: 'list'

任何人都可以告诉我我在这里做错了什么吗

1 个答案:

答案 0 :(得分:0)

Keras不支持输入本身就是输入层列表,输入列表需要包含输入层,您可以通过串联输入来实现:

model = Model(inputs=cat_els + [ts_inputs], outputs=out_class)

然后该模型将具有4个输入层。