Я вполне уверен, что это уже дублирующий вопрос, но я не смог найти подходящий ответ сам, поэтому я иду вперед и отвечаю на него, ссылаясь как на PyTorch документацию , так и Форум PyTorch
По сути, torch.Tensor.expand()
- это функция, которую вы ищете, и может использоваться следующим образом:
x = torch.rand([39, 1, 20, 256, 256])
y = x.expand(39, 3, 20, 256, 256)
Обратите внимание, что это работает только на одноэлементные измерения , что имеет место в вашем примере, но может не работать для произвольных измерений до расширения. Кроме того, это в основном просто предоставление другого представления памяти , что означает, что, согласно документации, вы должны иметь в виду следующее:
Более одного элемента расширенный тензор может относиться к одной ячейке памяти. В результате операции на месте (особенно те, которые векторизованы) могут привести к некорректному поведению. Если вам нужно записать в тензоры, сначала клонируйте их.
Для вновь выделенной версии памяти см. torch.Tensor.repeat
, которая обрисована в общих чертах в this ( немного связаны) ответ . Синтаксис работает в остальном точно так же, как expand()
.