torch.empty_permuted
-
torch.empty_permuted(size, physical_layout, *, dtype=None, layout=None, device=None, requires_grad=False, pin_memory=False) → Tensor -
Создаёт неинициализированный, неперекрывающийся и плотный тензор с указанным
size, гдеphysical_layoutзадаёт физическое расположение измерений в памяти (каждое логическое измерение перечислено от самого внешнего к самому внутреннему).physical_layout— это обобщение обозначений NCHW/NHWC: если каждому измерению присвоить число в соответствии с порядком его следования в размере (N=0, C=1, H=2, W=3), то NCHW — это(0, 1, 2, 3), а NHWC —(0, 2, 3, 1). Иными словами, шаги выходного тензораtтаковы, чтоt.stride(physical_layout[i]) == contiguous_strides[i](обратите внимание: эта функция не эквивалентнаtorch.empty(size).permute(physical_layout)).В отличие от
torch.empty_strided(), эта функция гарантированно создаёт плотный тензор без перекрытий. Если возможно, используйте эту функцию вместоtorch.empty_strided()или ручного использованияtorch.as_strided().Примечание
Если
torch.use_deterministic_algorithms()иtorch.utils.deterministic.fill_uninitialized_memoryодновременно установлены вTrue, выходной тензор инициализируется, чтобы предотвратить возможное недетерминированное поведение при использовании данных в качестве входных данных для операции. Тензоры с плавающей точкой и комплексные тензоры заполняются значением NaN, а целочисленные тензоры — максимальным значением.- Параметры:
- Именованные аргументы:
-
-
dtype (
torch.dtype, необязательно) – требуемый тип данных возвращаемого тензора. По умолчанию: еслиNone, используется глобальное значение по умолчанию (см.torch.set_default_dtype()). -
layout (
torch.layout, необязательно) – требуемый формат возвращаемого тензора. По умолчанию:torch.strided. -
device (
torch.device, необязательно) – требуемое устройство возвращаемого тензора. По умолчанию: еслиNone, используется текущее устройство для типа тензора по умолчанию (см.torch.set_default_device()).deviceбудет CPU для типов тензоров CPU и текущим устройством CUDA для типов тензоров CUDA. -
requires_grad (bool, необязательно) – должен ли autograd записывать операции над возвращаемым тензором. По умолчанию:
False. -
pin_memory (bool, необязательно) – если задано, возвращаемый тензор будет размещён в закреплённой памяти. Работает только для тензоров CPU. По умолчанию:
False.
-
dtype (
Примеры
>>> torch.empty((2, 3, 5, 7)).stride() (105, 35, 7, 1) >>> torch.empty_permuted((2, 3, 5, 7), (0, 1, 2, 3)).stride() (105, 35, 7, 1) >>> torch.empty((2, 3, 5, 7), memory_format=torch.channels_last).stride() (105, 1, 21, 3) >>> torch.empty_permuted((2, 3, 5, 7), (0, 2, 3, 1)).stride() (105, 1, 21, 3) >>> torch.empty_permuted((2, 3, 5, 7), (0, 2, 3, 1)).dim_order() (0, 2, 3, 1)
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.empty_permuted.html