【问题标题】:Enforce pad_sequence to a certain length强制 pad_sequence 到一定长度
【发布时间】:2021-08-21 11:34:44
【问题描述】:

我有一组张量,我用pad_sequence 填充,但我需要保证它们的长度固定。我现在不能这样做,因为pad_sequence 会将较短的张量扩展到最长的张量,如果那个最长的张量没有达到我想要的长度,我就完蛋了。我认为一个解决方案可能是向其中一个张量添加零以填充到我想要的长度,这样填充的结果将具有我想要的长度。我不知道该怎么做

假设我有一个形状为torch.Size([44]) 且所需长度为50 的张量,我如何向它添加零以达到torch.Size([50]) 的形状?无论初始张量形状如何,这都需要保持。

【问题讨论】:

    标签: python deep-learning pytorch recurrent-neural-network


    【解决方案1】:

    你可以像这样实现你的逻辑:

    from torch.nn.utils.rnn import pad_sequence
    
    # Desired max length
    max_len = 50
    
    # 100 seqs of variable length (< max_len)
    seq_lens = torch.randint(low=10,high=44,size=(100,))
    seqs = [torch.rand(n) for n in seq_lens]
    
    # pad first seq to desired length
    seqs[0] = nn.ConstantPad1d((0, max_len - seqs[0].shape[0]), 0)(seqs[0])
    
    # pad all seqs to desired length
    seqs = pad_sequence(seqs)
    

    【讨论】:

      猜你喜欢
      • 2017-01-15
      • 2013-07-09
      • 2018-11-09
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多