Как заменить torch.tensor на месте новым дополненным тензором?

#python-3.x #pytorch #tensor

#python-3.x #pytorch #тензор

Вопрос:

Я пытаюсь выяснить, как перезаписать объект torch.tensor, расположенный внутри dict, новым torch.tensor, который немного длиннее из-за заполнения.

 # pad the tensor
zeros = torch.zeros(55).long()
zeros[zeros == 0] = 100  # change to padding
temp_input = torch.cat([batch['input_ids'][0][0], zeros], dim=-1) # cat
temp_input.shape  # [567]
  
 batch['input_ids'][0][0].shape  # [512]
  
 batch['input_ids'][0][0] = temp_input
# The expanded size of the tensor (512) must match the existing size (567) at non-singleton dimension 0.  Target sizes: [512].  Tensor sizes: [567]
  

Я изо всех сил пытаюсь найти способ расширить значения тензора на месте или перезаписать их, если размеры изменяются.

Dict передается из загрузчика данных torch и выглядит следующим образом:

 {'input_ids': tensor([[[  101,  3720,  2011,  ..., 25786,  2135,   102]],
 
         [[  101,  1017,  2233,  ...,     0,     0,     0]],
 
         [[  101,  1996,  2899,  ..., 14262, 20693,   102]],
 
         [[  101,  2197,  2305,  ...,  2000,  1996,   102]]]),
 'attn_mask': tensor([[[1, 1, 1,  ..., 1, 1, 1]],
 
         [[1, 1, 1,  ..., 0, 0, 0]],
 
         [[1, 1, 1,  ..., 1, 1, 1]],
 
         [[1, 1, 1,  ..., 1, 1, 1]]]),
 'cats': tensor([[-0.6410,  0.1481, -2.1568, -0.6976],
         [-0.4725,  0.1481, -2.1568,  0.7869],
         [-0.6410, -0.9842, -2.1568, -0.6976],
         [-0.6410, -0.9842, -2.1568, -0.6976]], grad_fn=<StackBackward>),
 'target': tensor([[1],
         [0],
         [1],
         [1]]),
 'idx': tensor([1391, 4000,  293,  830])}
  

Комментарии:

1. Я не думаю, что вы можете это сделать. Тензоры разных размеров не могут быть объединены в пакет.