【问题标题】:LSTM: How to effectively comprehend and use return_sequences=False?LSTM:如何有效理解和使用return_sequences=False?
【发布时间】:2018-09-10 21:34:44
【问题描述】:

我正在执行多变量时间序列分析。我打算用不同的批量大小和超参数多次运行这个网络。因此,到目前为止,我一直保持一般性并假设

B := Number of batches

T := Number of timesteps per batch

N := Number of features per timestep 

我的最终目标是在一批上调用 model.predict(当然,这还没有用于训练)。因此它看起来像这样

prediction = model.predict(unknown)
unknown.shape = (T, N)
prediction.shape = (N,)

我一直在尝试大量的网络。

我无法让它工作

model.add(LSTM(N, input_shape=(T, N), return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(N, input_shape=(T, N), return_sequences=False)) 
model.add(Dense(N))

但是,我可以让它工作

model.add(LSTM(N, input_shape=(T, N), return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(N, input_shape=(T, N), return_sequences=True)) # True here 
model.add(Dense(N))

如果输出包含最后一个时间步,即我正在寻找的 f(t+1),那么 return_sequences=True 有什么问题?我想这并不能解决根本问题,即我不完全了解如何构建这些网络。就像我说的,在开始进行实验之前,我希望尽可能保持一般性并深入了解网络。

我将使用非常不同的 B、T 和 N 值进行实验,看看哪个效果最好。

我尝试阅读文档等,但我非常卡住并且感到沮丧,所以我想我会求助于社区。​​p>

【问题讨论】:

  • 第一个网络(return_sequences 设置为 False)是否产生错误?还是根本没有产生预期的结果?
  • 错误预期 lstm_2 有两个维度,但它收到了形状为 (1, T, N) 的数组

标签: python keras lstm rnn


【解决方案1】:

希望以下代码对您有所帮助 例如,如果每层的节点数是 150

model.add(LSTM(150, return_sequences=True,input_shape=(T,N)))
model.add(LSTM(150))
model.add(Dense(1))

并在代码中的第二个 lstm 中删除 input_shape=(T, N)。您已指定它需要 2D 数组(T,N),但第一个 LSTM 提供了一个由 (1,T,N) 组成的 3d 数组

【讨论】:

  • 感谢您的评论!我遇到了另一个错误,但是
  • 你得到了什么错误,return_sequences=True 返回一个 3D 数组,如果你有多层 lstm,你应该将它设置为 True 除了最后一层......而且你还有写到你的输入形状是(T,N)我希望你在把它给lstm之前把它转换成一个3D数组(记录总数(行),T(时间步长),N(维度数)
【解决方案2】:

无需在第二个循环层中指定input_shape 参数。当循环层是网络中的第一层时,这个参数是明确需要的,否则不需要。

如果您希望在每个循环层指定输入批次形状,请记住设置参数stateful = True 以呈现您的 LSTM 状态(并且仅在网络的第一层使用此参数)。

【讨论】:

  • 删除 input_shape 参数后,我得到:检查目标时出错:预期 lstm_2 有 2 维,但得到的数组形状为 (1, 8, 11)
  • 第一个 LSTM 层是你网络中的第一层吗?
  • 是的,第一层是你在问题中看到的第一个 LSTM
  • 也许这篇文章可以帮助诊断您的问题:machinelearningmastery.com/…
  • 不,我已经阅读了那篇文章。他们从不做 return_sequences=False。
猜你喜欢
  • 2020-09-23
  • 1970-01-01
  • 2020-06-10
  • 2018-12-24
  • 1970-01-01
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
  • 2017-08-03
相关资源
最近更新 更多