【问题标题】:LSTM/RNN many to oneLSTM/RNN 多对一
【发布时间】:2017-01-23 17:29:00
【问题描述】:

我有以下数据集,用于由 5 个连续输入向量组成的化学过程,以产生 1 个输出。每个输入每分钟采样一次,而输出 os 每 5 次采样一次。

虽然我相信输出取决于之前的 5 个输入向量,但我决定为我的设计寻找 LSTM。在对我的 LSTM 架构进行了大量研究之后,我得出结论,我应该用零屏蔽一些输出序列,只留下最后一个输出。根据我的数据集,最终架构如下:

我的问题是:我的 3D 输入张量参数应该是什么?例如。 [5, 5, ?]?还有我的“批量大小”应该是多少?应该是我的样品数量吗?

【问题讨论】:

    标签: machine-learning neural-network artificial-intelligence deep-learning lstm


    【解决方案1】:

    由于您要进行多对一序列建模,因此您不需要在输出中填充零(这不是必需的)。最简单的事情是在最后一个时间步执行分类,即在 RNN/LSTM 看到第 5 个输入之后。您的 3D 输入张量的维度将为 [batch_size, sequence_length, input_dimensionality],其中 sequence_length 在您的情况下为 5(第 1-5、7-11、13-17 行等),并且 input_dimensionality 也是 5(即 A 列-E)。 Batch_size 取决于示例的数量(以及您的数据的可靠性),如果您有超过 10,000 个示例,那么 30-50 的批量大小应该是可以的(阅读 this 关于选择适当批量大小的说明)。

    【讨论】:

    • 你的意思是我应该在最后一个时间步包含一个softmax分类器吗?有没有示例代码?
    • 是的,你应该在最后一个时间步有一个 softmax 分类器。 This 可能是一个很好的起点(如果您选择 Theano,则只需将 T.nnet.softmax(..) 移到扫描之外。此外,这是没有批处理的简单 rnn,但添加起来很简单。
    • 可能应该以Keras 开头,This 示例完全符合您的要求(您只需提供正确格式的数据)。
    • 非常感谢检查它,而且我发现本教程基于 TensorFlow monik.in/a-noobs-guide-to-implementating-rnn-lstm-using-tensorflow/ 但仍在弄清楚如何声明并传递我的数据集,因为我是 TensorFlow 新手。正如你之前建议的那样,它在最后一个时间步有一个 Softmax。
    • 对不起,我没听懂你的问题,我只是注意到,既然你在做regression(即你的预测是真实值而不是类标签),使用它可能不是一个好主意softmax(因为它为每个类标签分配概率),您的输出层不应包含任何非线性,只需激活的线性加权总和就足够了。还要注意您的预处理(正确规范化)
    【解决方案2】:

    看前面的答案,我想说你不必做多对一的架构。这真的取决于你遇到的问题。例如,如果您的系统与过去有很多依赖关系,即在您的情况下超过 5 个样本,那么最好执行多对多架构但具有不同的输入和输出频率。但是如果您认为前 5 个样本不会影响您接下来的 5 个样本。那么多对一架构就可以了。

    此外,如果您的问题是回归,您可以使用 Dense 层,因为 LSTM 单元的输出是输出范围为 (-1, 1) 的 tanh。

    【讨论】:

    • 嗨!我认为“这取决于您遇到的问题”是什么意思并不明确。问题很清楚,问题假设过去有一些交互,并且架构似乎已经确定。实际问题是关于张量和批次的形状;)
    • 我明白你的意思。 “过去的一些互动”也是我所指的重点。如果输出依赖于过去 5 个以上的序列,则所提出的架构不是解决此问题的正确架构。此外,这似乎是一个回归问题,因此需要密集输出而不是 cmets 中讨论过的 softmax。
    • 基本上,对于未来的读者来说,如果每 5 个输入值有 1 个输出,则每 5 个样本切分数据并使用多对一架构不一定会提供最佳性能。
    • 同意,我看到你关于架构和延迟的观点,我认为它们是正确的,或者至少值得仔细考虑。不过,我想,您的答案被否决的原因是它没有直接解决所提出的问题。对于未来的情况,当您不回答所提出的具体问题时,请考虑制作 cmets。干杯,欢迎再次访问该网站!
    • 当然可以。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多