【问题标题】:How to give multiple layers to LSTM as timesteps in keras如何在keras中将多层作为时间步长赋予LSTM
【发布时间】:2019-07-27 05:09:01
【问题描述】:

我想将两个单独的神经网络作为 2 个时间步分配给一个 lstm。这是我的代码:

input1 = Input(shape=(self.state_size,1))
input2 = Input(shape=(self.state_size,1))

out1 = Conv1D(12, 5, padding="SAME", activation="relu")(input1)
out1 = Flatten()(out1)
out1 = Dense(12, activation="relu")(out1)

out2 = Conv1D(12, 5, padding="SAME", activation="relu")(input2)
out2 = Flatten()(out2)
out2 = Dense(12, activation="relu")(out2)

out = CuDNNLSTM(1)([out1,out2])

错误是:

ValueError: Input 0 is incompatible with layer cu_dnnlstm_1: expected ndim=3, found ndim=2

指的是:

out = CuDNNLSTM(1)([out1,out2])

我也试过了:

out = CuDNNLSTM(1)(out1,out2)

我的输入形状是 (none,4,1),我需要输出形状是 (none,1)。显然 CuDNNLSTM 的输入形状必须是 (none,2,12),但我很难连接 out1 和 out2

【问题讨论】:

    标签: tensorflow keras lstm recurrent-neural-network


    【解决方案1】:

    你要去stack中间维度的张量:

    steps = Lambda(lambda x: K.stack(x, axis=1))([out1, out2])
    out = CuDNNSLTM(1)(steps)
    

    但我不确定包含两个步骤的序列是否会带来常规层无法获得的出色结果。

    【讨论】:

      猜你喜欢
      • 2019-05-29
      • 2021-09-27
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 2018-01-11
      • 2018-01-25
      • 1970-01-01
      相关资源
      最近更新 更多