【发布时间】:2023-03-25 21:57:01
【问题描述】:
我想在 Keras 中合并一个前向 LSTM 和一个后向 LSTM。后向 LSTM 的输入数组与前向 LSTM 的输入数组不同。因此,我不能使用 keras.layers.Bidirectional。
前向输入是 (10, 4)。 后向输入是 (12, 4) 并且在放入模型之前被反转。我想在 LSTM 之后再次反转它并与正向合并。
简化模型如下。
from lambdawithmask import Lambda as MaskLambda
def reverse_func(x, mask=None):
return tf.reverse(x, [False, True, False])
forward = Sequential()
backward = Sequential()
model = Sequential()
forward.add(LSTM(input_shape = (10, 4), output_dim = 4, return_sequences = True))
backward.add(LSTM(input_shape = (12, 4), output_dim = 4, return_sequences = True))
backward.add(MaskLambda(function=reverse_func, mask_function=reverse_func))
model.add(Merge([forward, backward], mode = "concat", concat_axis = 1))
当我运行它时,错误消息是: 传递给“ConcatV2”操作的“值”的列表中的张量具有不完全匹配的类型 [bool, float32]。
谁能帮助我?我在 Python 3.5.2 中使用 Keras (2.0.5) 编写代码,后端是 tensorflow (1.2.1)。
【问题讨论】:
-
我更新了我的答案,看看是否有帮助。随意评论和提问,显示错误出现的行和错误消息。我们随时为您提供帮助。