0

我首先使用 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?如何重置状态?

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

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

4

1 回答 1

0

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

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

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

于 2017-09-20T10:18:58.700 回答