2017-01-23 125 views
0

我正在尝试理解和实施LSTM。我明白他们需要定义一个序列长度T,并且批量执行训练。所以我们给网络提供了几个长度为T的序列。现在LSTM需要一个先前的状态作为输入,据我所知,它被初始化为零。我的问题是,每个序列后状态都重置为零?例如我有一个序列1,状态向量在这个序列中继续前进,然后我将它置于下一个序列的零处?还是将它带到下一个序列2?如果是这样,那么对于不相关的序列如何处理呢?例如我有来自2个不同文本的样本,并且将状态从文本1转换为文本2是没有意义的;这在实践中如何处理? 关于测试时间,状态向量初始化为零并且对整个序列执行,还是在每个子序列之后复位?在培训和测试期间重置LSTM中的状态

注:我把这个标签也Tensorflow,因为是我使用的框架,也许有人从那里可以帮我还。

回答

0

在Tensorflow,我95%肯定对每个序列的起始状态复位至零为您的批量和批次之间的每一个元素。 (5%,因为 “永不说永不” 的规则:)

编辑:

我也许应该进一步谈。 Tensorflow如何工作,它首先构建一个图形,然后将数据推送到其中。当你看到你构造的循环图时,我相信你会看到它的头部(第一个状态)连接到零,这意味着每当你通过图表推动数据时(例如通过sess.run()),它会从零发生器得到一个新的零点,因此如果忘记了它以前的运行状态。