LSTM / RNN多对一

时间:2016-09-15 15:48:10

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

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

dataset

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

lstm architecture

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

2 个答案:

答案 0 :(得分:9)

由于您要进行多对一的序列建模,因此您不需要将零填充到输出中(不需要它)。最简单的方法是在最后一个时间步骤进行分类,即在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关于选择合适的解释批量大小)。

答案 1 :(得分:-1)

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

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