【问题标题】:4D LSTM: Trouble with I/O Shapes4D LSTM:I/O 形状的问题
【发布时间】:2017-07-14 16:36:13
【问题描述】:

我正在尝试让 4D TimeDistributed(LSTM(...)) 在 Keras 中工作,但我遇到了输入/输出形状的问题。

batch_size = 1

model = Sequential()

model.add(TimeDistributed(LSTM(7, batch_input_shape=(batch_size,
    look_back,dataset.shape[1], dataset.shape[2]), stateful=True,
    return_sequences=True), batch_input_shape=(batch_size,
    look_back, dataset.shape[1], dataset.shape[2])))

model.add(TimeDistributed(LSTM(7, batch_input_shape= (batch_size,
    look_back,dataset.shape[1],dataset.shape[2]),
    stateful=True), batch_input_shape=(batch_size, look_back,
    dataset.shape[1], dataset.shape[2])))

model.add(TimeDistributed(Dense(7, input_shape = (batch_size,
   1,look_back, dataset.shape[1],dataset.shape[2]))))

model.compile(loss = 'mean_squared_error', optimizer='adam')

for i in range(10):
    model.fit(trainX, trainY, epochs=1, batch_size=batch_size,
        verbose=2, shuffle=False)
    model.reset_states()

trainX、trainY 和 dataset 的输入形状如下:

trainX.shape = (63, 3, 34607, 7)
trainY.shape = (63, 34607, 7)
dataset.shape = (100, 34607, 7)

我收到的错误如下:

检查目标时出错:预期 time_distributed_59 有 形状 (1, 3, 7) 但得到了形状 (63, 34607, 7) 的数组

上面提到的层是关于最后一个TimeDistributed Dense Layer。

这是我打印出每一层的输入和输出形状时的输出:

(1, 3, 34607, 7) 层[0] - 输入
(1, 3, 34607, 7) 层[0] - 输出
(1, 3, 34607, 7) 层[1] - 输入
(1, 3, 7) 层[1] - 输出
(1, 3, 7) 层[2] - 输入
(1, 3, 7) 层[2] - 输出

但是,最终的输出层应该是形状为 (1, 1, 34067, 7) 或形状为 (1, 34067, 7) 的预测

感谢您的任何建议!

【问题讨论】:

  • 您能否详细说明您真正想要实现的目标是什么?这似乎是一个非常奇怪的问题,而且您使用的架构似乎不合适。
  • @MarcinMożejko 我有一个训练集 X,其中包括 { [ t_1, t_2, t_3 ] , [ t_2, t_3, t_4] , [ t_3, t_4, t_5 ] ... } 这样 't_i ' 是第 i 个 tilmestep,它是一个 3-D 向量。另外,我的训练集 Y 包括 [t_4, t_5, t_6 ...]。因此,我使用 LSTM 来学习从 X_n 到 Y_n 的映射,使得 n 是每个向量 X 和 Y 的对应索引。
  • @MarcinMożejko 更抽象地说,我想使用 LSTM 对许多患者的多个实验室结果进行跨时间的回归。
  • 根据我的阅读,我必须使用 TimeDistributed 将 4D 向量输入到 LSTM 中。
  • @MarcinMożejko 这个解释有帮助吗?

标签: python keras lstm rnn


【解决方案1】:

您没有在第二个时间分布式 LSTM 层上设置返回序列 = True;默认为假。这可以解释您得到的 (1,3,7) 输出形状。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2017-11-17
    • 2020-06-24
    • 1970-01-01
    • 2011-08-26
    相关资源
    最近更新 更多