在 Pytorch 中实现有状态 LSTM/ConvLSTM 的最佳方式?

The best way to implement stateful LSTM/ConvLSTM in Pytorch?

我正在尝试使用 ConvLSTM 提高具有顺序信息的对象检测任务的性能。

典型的 ConvLSTM 模型采用形状为 (samples, time_steps, channels, rows, cols) 的 5D 张量作为输入。

as stated in this post,需要在 Pytorch ConvLSTM 层中将 500 张图像的长序列拆分为更小的片段。例如,它可以分成 10 个片段,每个片段有 50 个时间步长。


我有两个目标:

  1. 我想让网络记住 10 个片段序列的状态。 IE。如何在碎片之间传递隐藏状态?

  2. 我想输入(视频的)图像一张一张。 IE。 500 张图像的长序列被分成 500 个片段,每个片段只有一张图像。输入应该像 (all_samples, channels, rows, cols)。这只有在 1.goal 可以实现的情况下才有意义。


我找到了一些关于 Tensorflow 的好答案,但我使用的是 Pytorch。

The best way to pass the LSTM state between batches

在 Pytorch 中实现有状态 LSTM/ConvLSTM 的最佳方法是什么?

我发现this post有一个很好的例子

model = nn.LSTM(input_size = 20, hidden_size = h_size)
out1, (h1,c1) = model(x1)
out2, (h2,c2) = model(x2, (h1,c1))