【问题标题】:What happen when I feed lstm as multidimension array?当我将 lstm 作为多维数组提供时会发生什么?
【发布时间】:2018-05-03 21:04:26
【问题描述】:

我像这样从 tensorflow 创建 lstm 模型

model.add(LSTM(6, input_shape=(1, 6), return_sequences=True))
model.add(LSTM(3))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam' )
model.fit(X_train_t, y_train, epochs=200, batch_size=3, verbose=1)

X_train_t的值为

[[ 0.46412556  0.24775785  0.20179372  0.23430493  0.16704036  0.24215247]
 [ 0.          0.46412556  0.24775785  0.20179372  0.23430493  0.16704036]
 [ 0.15022422  0.          0.46412556  0.24775785  0.20179372  0.23430493]
 [ 0.2690583   0.15022422  0.          0.46412556  0.24775785  0.20179372]
 [ 0.2690583   0.2690583   0.15022422  0.          0.46412556  0.24775785]
 [ 0.24775785  0.2690583   0.2690583   0.15022422  0.          0.46412556]
 [ 0.21076233  0.24775785  0.2690583   0.2690583   0.15022422  0.        ]
...

它没有错误,但我不明白。 LSTM获取输入是时间序列,在一个节点循环。

为什么我放多维数组时没有错误我认为正确的输入应该是这样的。 lstm 如何获得输入?

[[ 0.24215247]
 [ 0.16704036]
 [ 0.23430493]
...

【问题讨论】:

    标签: python tensorflow keras lstm


    【解决方案1】:

    LSTM 将输入向量而不是数字作为输入。您指定为输入形状:

    input_shape=(1, 6)
    

    所以 6 维向量,这正是您在每个时间步中输入的内容:

    [ 0.46412556  0.24775785  0.20179372  0.23430493  0.16704036  0.24215247]
    

    因此,具有 3 个时间步长的输入序列将如下所示:

    [[ 0.46412556  0.24775785  0.20179372  0.23430493  0.16704036  0.24215247]
     [ 0.          0.46412556  0.24775785  0.20179372  0.23430493  0.16704036]
     [ 0.15022422  0.          0.46412556  0.24775785  0.20179372  0.23430493]]
    

    (3个向量,每6维)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多