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

时间:2021-04-07 04:19:23

标签: python pytorch conv-neural-network lstm recurrent-neural-network

我正在尝试使用 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。

TensorFlow: Remember LSTM state for next batch (stateful LSTM)

The best way to pass the LSTM state between batches

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

1 个答案:

答案 0 :(得分:0)

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

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