为什么NStepLSTM没有reset_state方法?

时间:2017-09-05 16:42:36

标签: chainer

我首先使用L.LSTM,然后我找到了这个NStepLSTM,它被发现是官方教程文档的一部分。 https://docs.chainer.org/en/stable/reference/generated/chainer.links.NStepLSTM.html?highlight=Nstep

  1. 为什么chainer.links.NStepLSTM或chainer.links.NStepBiLSTM没有reset_state?怎么reset_state?

  2. 是否传递了一个序列列表(每个序列是一个序列chainer。变量,例如一篇文章包含多个单词是一个变量)?这个类的目的是处理不同长度的序列吗?

  3. 我们可以使用truncate BPTT来节省chainer.links.NStepLSTM中的内存吗?如何

1 个答案:

答案 0 :(得分:0)

1。 NStepLSTM获取一批序列并返回一批输出序列,尽管LSTM获得了一批单词。您不需要使用for循环来使用NStepLSTM。 NStepLSTM使用cuDNN,这是NVIDIA提供的库,速度非常快。 NStepLSTM没有状态。如果要链接NStepLSTM,请使用NStepLSTM的输出。请参阅seq2seq示例:https://github.com/chainer/chainer/blob/master/examples/seq2seq/seq2seq.py

2。 是。它是诸如从句子创建的一批嵌入向量序列之类的gots。您可以使用不同长度的序列。请参见seq2seq示例。 请注意,L.NStepLSTM可以获得一系列句子,但F.NStepLSTM可以获得转置序列。我的意思是它可以获得一系列批次的单词。实际上L.NStepLSTM在其实现中调用F.transpose_sequences和F.NStepLSTM。

3。 对不起,这很难。正如我所说,NStepLSTM是cuDNN的RNN库的包装器。它不支持BPTT。当然你可以拆分句子并两次调用NStepLSTM。