将 CNN 编码器的输出传递给 convLSTM 层。 (火炬)
Posted
技术标签:
【中文标题】将 CNN 编码器的输出传递给 convLSTM 层。 (火炬)【英文标题】:Passing the output of a CNN encoder to convLSTM layers. (PyTorch) 【发布时间】:2021-02-10 14:43:05 【问题描述】:我有兴趣在自定义数据集上实现基于 LinkNet 的编码器-解码器结构,用于语义分割。我正在尝试在编码器和解码器之间引入 convLSTM 层。通常,正如预期的那样,编码器的输出是 4-dim 输出(batch_size、channels、height、width)。 convLSTM 层需要 5 维输入(batch_size、sequence_length、channels、height、width)。如何在不丢失任何信息的情况下将此 4 维张量转换为 5 维张量?我最初也想过拆分 batch_size 以适应 sequence_length,但这可能是个问题,因为我正在处理视频帧。
也许我正在考虑使用四/五帧序列进行训练,即帧 t 的语义分割图是通过最后三到四帧的信息确定的,因此,sequence_length 为 4 或 5 就可以了。
如何引入序列长度?是在预处理期间还是在编码器结构之后?
最重要的是,怎么做?
【问题讨论】:
【参考方案1】:你不能。 ConvLSTM 期望一个序列,这是您缺少的维度。 LinkNet 只接受一张图片作为输入,所以你不能真正在 Linknet 中使用 ConvLSTM。
【讨论】:
他们使用帧序列。 arxiv.org/pdf/1905.01058.pdf 如果我理解正确,你必须使用convlstm作为编码器和解码器以上是关于将 CNN 编码器的输出传递给 convLSTM 层。 (火炬)的主要内容,如果未能解决你的问题,请参考以下文章