【问题标题】:Pytorch equivalent of `tf.reverse_sequence`?Pytorch 相当于“tf.reverse_sequence”?
【发布时间】:2019-09-18 04:11:33
【问题描述】:

我想在填充序列上执行反向 LSTM,这需要在没有填充的情况下反转输入序列。

对于这样的批处理(_ 代表填充):

a b c _ _ _
d e f g _ _
h i j k l m

如果想得到:

c b a _ _ _
g f e d _ _
m l k j i h

TensorFlow 有一个函数tf.reverse_sequence,它接受输入张量和批次中序列的长度,并返回反向批次。在 Pytorch 中是否有简单的方法?

【问题讨论】:

    标签: python tensorflow pytorch


    【解决方案1】:

    不幸的是,还没有直接的等价物,although it has been requested

    我还查看了整个PackedSequence 对象,但它没有定义.flip() 操作。假设您已经有必要的数据来提供长度,正如您所建议的,您可以使用此函数实现它:

    def flipBatch(data, lengths):
        assert data.shape[0] == len(lengths), "Dimension Mismatch!"
        for i in range(data.shape[0]):
            data[i,:lengths[i]] = data[i,:lengths[i]].flip(dims=[0])
    
        return data
    

    不幸的是,这仅适用于您的序列是二维的(使用batch_size x sequence),但您可以轻松扩展它以满足您的特定输入要求。这已经或多或少涵盖了上述链接中的提案,但我将其更新为今天的标准。

    【讨论】:

      猜你喜欢
      • 2020-05-05
      • 2019-12-21
      • 2019-11-27
      • 2021-12-04
      • 2021-02-02
      • 2021-11-11
      • 1970-01-01
      • 2019-07-02
      • 1970-01-01
      相关资源
      最近更新 更多