首页 文章

在训练和测试期间在LSTM中重置状态

提问于
浏览
0

我正在努力理解和实施LSTM . 我知道他们需要定义序列长度T,并且训练是分批进行的 . 所以我们向网络提供了几个长度为T的序列 . 现在LSTM需要一个先前的状态作为输入,据我所知,它被初始化为零 . 我的问题是,每个序列后状态是否重置为零?例如,我有一个序列1,状态向量按此顺序前进,然后我把它归零以用于下一个序列?还是将它带到下一个序列2?如果是这样,如何对不相关的序列进行处理;例如,我有来自2个不同文本的样本,将状态从文本1传递到文本2是没有意义的;这在实践中如何处理?关于测试时间,状态向量初始化为零并在整个序列中携带,还是在每个子序列之后复位?

注意:我在Tensorflow中也标记了这个,因为我正在使用的框架,也许那里的人也可以帮助我 .

2 回答

  • 0

    在Tensorflow中,我95%确定每个序列的起始状态对于批次中和批次之间的每个元素都重置为零 . (5%因为“永不言败”的规则:)

    编辑:

    我应该详细说明一下 . Tensorflow如何工作,它首先构建一个图形,然后推送您的数据 . 当你看到你构建的循环图时,我相信你会看到它的头(第一个状态)连接到零,这意味着每次你通过图形推送数据(例如通过sess.run()),它将从零生成器获得一个新的零,因此如果忘记了以前运行的旧状态 .

  • 0

    这取决于您如何实施RNN的批处理 . 从理论上讲,状态在处理一系列数据时非常重要,因此,如果整个数据序列没有完成,则不应重置状态 . 因此,通常您需要在纪元结束时重置,并且只在一个批处理循环结束时不应重置 .

相关问题