Pytorch中的截断时间反向传播(BPTT)

Pytorch中的截断时间反向传播(BPTT),pytorch,backpropagation,truncated,Pytorch,Backpropagation,Truncated,在Pytork中,我通过以下方式启动反向传播(通过时间)来训练RNN/GRU/LSTM网络: 当序列很长时,我想做一个截断的时间反向传播,而不是使用整个序列的正常时间反向传播 但是我在pytorchapi中找不到任何参数或函数来设置截断的BPTT。我错过了吗?我应该自己在Pytorch中编码吗?下面是一个示例: 适用于范围内的t(t): y=lstm(y) 如果T-T==k: out.detach() out.backward() 因此,在本例中,k是用于控制要展开的时间步的参数。只需在要剪切

在Pytork中,我通过以下方式启动反向传播(通过时间)来训练RNN/GRU/LSTM网络:

当序列很长时,我想做一个截断的时间反向传播,而不是使用整个序列的正常时间反向传播

但是我在pytorchapi中找不到任何参数或函数来设置截断的BPTT。我错过了吗?我应该自己在Pytorch中编码吗?

下面是一个示例:

适用于范围内的t(t):
y=lstm(y)
如果T-T==k:
out.detach()
out.backward()

因此,在本例中,
k
是用于控制要展开的时间步的参数。

只需在要剪切backprop的点上使用
h=h.detach()
。请参见语言建模示例中的。它有效地完成了截断。谢谢。在这段代码中,哪个参数控制我想要BPTT的序列数?例如,代码中的序列长度(args.bptt)是35,假设我希望bptt只在最后5个序列上完成。5使用的是什么参数。是否也应该在if子句中执行
out.backward()
?如果要在每个有效时间段执行backprop,则为“是”。所示示例仅在最后一个有效的时间步上执行更新。
loss.backward()