torch.Tensor
Создано: 23 дек. 2016 г. | Последнее обновление: 11 июл. 2026 г.
torch.Tensor — это многомерная матрица, содержащая элементы одного типа данных. Дополнительные сведения о поддержке типов данных см. в разделе torch.dtype.
Создание и основные операции
Тензор можно создать из Python-списка list или последовательности с помощью конструктора torch.tensor():
>>> torch.tensor([[1., -1.], [1., -1.]])
tensor([[ 1.0000, -1.0000],
[ 1.0000, -1.0000]])
>>> torch.tensor(np.array([[1, 2, 3], [4, 5, 6]]))
tensor([[ 1, 2, 3],
[ 4, 5, 6]])
Предупреждение
torch.tensor() всегда создает копию data. Если у вас есть тензор data и вы хотите только изменить его флаг requires_grad, используйте requires_grad_() или detach(), чтобы избежать копирования. Если у вас есть массив numpy и вы хотите избежать копирования, используйте torch.as_tensor().
Тензор с определенным типом данных можно создать, передав конструктору или операции создания тензора torch.dtype и/или torch.device:
>>> torch.zeros([2, 4], dtype=torch.int32)
tensor([[ 0, 0, 0, 0],
[ 0, 0, 0, 0]], dtype=torch.int32)
>>> cuda0 = torch.device('cuda:0')
>>> torch.ones([2, 4], dtype=torch.float64, device=cuda0)
tensor([[ 1.0000, 1.0000, 1.0000, 1.0000],
[ 1.0000, 1.0000, 1.0000, 1.0000]], dtype=torch.float64, device='cuda:0')
Дополнительные сведения о создании тензоров см. в разделе Операции создания.
Получать доступ к содержимому тензора и изменять его можно с помощью синтаксиса индексирования и срезов Python:
>>> x = torch.tensor([[1, 2, 3], [4, 5, 6]])
>>> print(x[1][2])
tensor(6)
>>> x[0][1] = 8
>>> print(x)
tensor([[ 1, 8, 3],
[ 4, 5, 6]])
Используйте torch.Tensor.item(), чтобы получить число Python из тензора, содержащего одно значение:
>>> x = torch.tensor([[1]]) >>> x tensor([[ 1]]) >>> x.item() 1 >>> x = torch.tensor(2.5) >>> x tensor(2.5000) >>> x.item() 2.5
Дополнительные сведения об индексировании см. в разделе Операции индексирования, создания срезов, объединения и изменения.
Тензор можно создать с помощью requires_grad=True, чтобы torch.autograd записывал выполняемые над ним операции для автоматического дифференцирования.
>>> x = torch.tensor([[1., -1.], [1., 1.]], requires_grad=True)
>>> out = x.pow(2).sum()
>>> out.backward()
>>> x.grad
tensor([[ 2.0000, -2.0000],
[ 2.0000, 2.0000]])
У каждого тензора есть связанное с ним torch.Storage, в котором хранятся его данные. Класс тензора также предоставляет многомерное представление хранилища с шагами и определяет числовые операции над ним.
Примечание
Дополнительные сведения о представлениях тензоров см. в разделе Представления тензоров.
Примечание
Дополнительные сведения об атрибутах torch.dtype, torch.device и torch.layout объекта torch.Tensor см. в разделе Атрибуты тензоров.
Примечание
Методы, изменяющие тензор, обозначаются суффиксом в виде символа подчеркивания. Например, torch.FloatTensor.abs_() вычисляет абсолютное значение на месте и возвращает измененный тензор, а torch.FloatTensor.abs() вычисляет результат в новом тензоре.
Примечание
Чтобы изменить torch.device и/или torch.dtype существующего тензора, воспользуйтесь методом to() этого тензора.
Предупреждение
Текущая реализация torch.Tensor создает дополнительную нагрузку на память, поэтому в приложениях с большим количеством крошечных тензоров может неожиданно потребоваться много памяти. Если это ваш случай, рассмотрите возможность использования одной большой структуры.
Справочник по классу Tensor
-
class torch.Tensor -
В зависимости от сценария использования есть несколько основных способов создать тензор.
- Чтобы создать тензор из существующих данных, используйте
torch.tensor(). - Чтобы создать тензор заданного размера, используйте операции создания тензоров
torch.*(см. раздел Операции создания). - Чтобы создать тензор того же размера (и похожих типов), что и другой тензор, используйте операции создания тензоров
torch.*_like(см. раздел Операции создания). - Чтобы создать тензор похожего типа, но другого размера, чем у другого тензора, используйте операции создания
tensor.new_*. - Существует устаревший конструктор
torch.Tensor, использование которого не рекомендуется. Вместо него используйтеtorch.tensor().
- Чтобы создать тензор из существующих данных, используйте
-
Tensor.__init__(self, data) -
Этот конструктор устарел; вместо него рекомендуется использовать
torch.tensor(). Поведение конструктора зависит от типаdata.- Если
data— это тензор, возвращается псевдоним исходного тензора. В отличие отtorch.tensor(), этот конструктор отслеживает autograd и передает градиенты исходному тензору. Аргументdeviceне поддерживается для этого типаdata. - Если
data— это последовательность или вложенная последовательность, создается тензор с типом данных по умолчанию (обычноtorch.float32), содержащий значения из последовательностей; при необходимости выполняется преобразование типов. Следует отметить, что это отличается отtorch.tensor(): этот конструктор всегда создает тензор с типом данных с плавающей точкой, даже если все входные значения — целые числа. - Если
data— этоtorch.Size, возвращается пустой тензор указанного размера.
Этот конструктор не поддерживает явное указание
dtypeилиdeviceвозвращаемого тензора. Рекомендуется использоватьtorch.tensor(), который предоставляет такую возможность.- Аргументы:
-
data (array_like): тензор, на основе которого выполняется создание.
- Именованные аргументы:
-
-
device (torch.device, optional): the desired device of returned tensor. -
По умолчанию: если None, используется такое же значение
torch.device, как у этого тензора.
-
- Если
-
Tensor.T -
Возвращает представление этого тензора с обратным порядком измерений.
Если
n— это количество измерений вx, тоx.Tэквивалентноx.permute(n-1, n-2, ..., 0).Предупреждение
Использование
Tensor.Tдля изменения порядка измерений тензоров размерности, отличной от 2, считается устаревшим; в будущей версии это вызовет ошибку. Для транспонирования пакетов матриц рассмотрите возможность использованияmT, а для обратного порядка измерений тензора —x.permute(*torch.arange(x.ndim - 1, -1, -1)).
-
Tensor.H -
Возвращает представление матрицы (двумерного тензора) с комплексным сопряжением и транспонированием.
Для комплексных матриц
x.Hэквивалентноx.transpose(0, 1).conj(), а для вещественных матриц —x.transpose(0, 1).См. также
mH: атрибут, который также работает с пакетами матриц.
-
Tensor.mT -
Возвращает представление этого тензора с транспонированными двумя последними измерениями.
x.mTэквивалентноx.transpose(-2, -1).
-
Tensor.mH -
Обращение к этому свойству эквивалентно вызову
adjoint().
Возвращает новый тензор, используя | |
Возвращает тензор размера | |
Возвращает тензор размера | |
Возвращает тензор размера | |
Возвращает тензор размера | |
Равно | |
Равно | |
Равно | |
Устройство | |
По умолчанию этот атрибут имеет значение | |
Синоним для | |
Для входного тензора с комплексными значениями возвращает новый тензор, содержащий действительные значения тензора | |
Возвращает новый тензор, содержащий мнимые значения тензора | |
Возвращает количество байтов, занимаемых «представлением» элементов тензора, если тензор не использует разреженный формат хранения. | |
Синоним для | |
См. | |
Версия | |
Синоним для | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
Прибавляет скаляр или тензор к тензору | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
См. | |
Версия | |
См. | |
Версия | |
Синоним для | |
См. | |
См. | |
См. | |
См. | |
См. | |
Применяет функцию | |
См. | |
См. | |
См. |
См. | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
atan2_(other) -> Tensor | |
См. | |
См. | |
Вычисляет градиент текущего тензора относительно листьев графа. | |
См. | |
Версия | |
Возвращает результирующий тензор, в котором каждый элемент независимо выбирается из распределения . | |
Заполняет каждую позицию | |
| |
См. | |
Версия | |
Версия | |
Версия | |
Версия | |
Версия | |
Версия | |
См. | |
| |
| |
См. | |
Заполняет тензор числами, выбранными из распределения Коши: | |
См. | |
Версия | |
| |
См. | |
См. | |
Версия | |
Псевдоним для | |
Псевдоним для | |
См. | |
Возвращает непрерывно расположенный в памяти тензор, содержащий те же данные, что и тензор | |
Копирует элементы из | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
См. | |
См. | |
Версия | |
acosh() -> Tensor | |
acosh_() -> Tensor | |
Возвращает копию этого объекта в памяти CPU. | |
См. | |
Возвращает копию этого объекта в памяти CUDA. | |
См. | |
См. | |
См. | |
Версия | |
См. | |
Версия | |
| |
| |
| |
Возвращает адрес первого элемента тензора | |
Возвращает адрес первого элемента тензора | |
См. | |
Принимает квантованный тензор, деквантует его и возвращает деквантованный тензор с плавающей точкой. | |
См. | |
Возвращает количество плотных измерений в разреженном тензоре | |
Возвращает новый тензор, отсоединённый от текущего графа. | |
Отсоединяет тензор от графа, который его создал, превращая его в листовой узел. | |
См. | |
См. | |
См. | |
Заполняет главную диагональ тензора, имеющего не менее двух измерений. | |
См. | |
См. | |
См. | |
См. | |
Версия | |
Возвращает число измерений тензора | |
Возвращает однозначно определяемый кортеж целых чисел, описывающий порядок измерений или физическое расположение | |
См. | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
| |
См. | |
Возвращает размер отдельного элемента в байтах. | |
См. | |
Версия | |
См. | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
Возвращает новое представление тензора | |
Расширяет этот тензор до того же размера, что и | |
Заполняет тензор | |
См. | |
Версия | |
Заполняет тензор | |
См. | |
См. | |
См. | |
См. | |
| |
Версия | |
См. | |
Версия | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
См. | |
См. | |
Версия | |
См. | |
Версия | |
Версия | |
Заполняет тензор | |
См. | |
См. | |
Для тензоров CUDA эта функция возвращает порядковый номер устройства GPU, на котором находится тензор. | |
См. | |
Версия | |
См. | |
Версия | |
| |
См. | |
См. | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
Добавляет элементы | |
Версия | |
Копирует элементы | |
Версия | |
Заполняет элементы тензора | |
Версия | |
Помещает значения из тензора | |
Версия | |
Накапливает элементы | |
Возвращает тензор индексов разреженного тензора COO. | |
См. | |
| |
Для квантованного тензора | |
См. | |
См. | |
См. | |
См. | |
См. | |
См. | |
См. | |
Возвращает True, если тензор | |
Возвращает True, если тип данных | |
Возвращает True, если бит комплексного сопряжения | |
Возвращает True, если тип данных | |
По соглашению все тензоры, у которых | |
Возвращает true, если этот тензор находится в закреплённой памяти. | |
Возвращает True, если оба тензора указывают на одну и ту же область памяти (одинаковые хранилище, смещение, размер и шаг). | |
Проверяет, находится ли тензор в разделяемой памяти. | |
Возвращает True, если тип данных | |
Равно | |
См. | |
См. | |
Возвращает значение этого тензора как стандартное число Python. | |
См. | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
Заполняет тензор |
Версия с изменением на месте для | |
Версия с изменением на месте для | |
Версия с изменением на месте для | |
Версия с изменением на месте для | |
См. | |
Версия с изменением на месте для | |
| |
См. | |
Версия с изменением на месте для | |
lt(other) -> Tensor | |
Версия с изменением на месте для | |
См. | |
См. | |
Создаёт экземпляр | |
Применяет | |
Копирует элементы из | |
Версия без изменения на месте для | |
Заполняет элементы тензора | |
Версия без изменения на месте для | |
См. | |
|
Примечание
| |
См. | |
См. | |
См. | |
Определяет способ преобразования | |
См. | |
См. | |
См. | |
См. | |
См. | |
См. | |
См. | |
См. | |
См. | |
См. |
См. | |
Версия | |
См. | |
Версия | |
См. | |
См. | |
Версия | |
См. | |
См. | |
См. | |
Псевдоним для | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
Псевдоним для | |
Версия | |
См. | |
Заполняет тензор | |
См. | |
Возвращает тензор в виде массива NumPy | |
См. | |
См. | |
См. | |
Возвращает представление тензора с переставленными измерениями. | |
Копирует тензор в закреплённую память, если он ещё не находится в ней. | |
См. | |
Версия | |
См. | |
См. | |
Версия | |
См. | |
Копирует элементы из | |
Возвращает схему квантования заданного QTensor. | |
См. | |
Для тензора, квантованного с помощью линейного (аффинного) квантования, возвращает масштаб базового квантователя(). | |
Для тензора, квантованного с помощью линейного (аффинного) квантования, возвращает нулевую точку базового квантователя(). | |
Для тензора, квантованного с помощью линейного (аффинного) поканального квантования, возвращает тензор масштабов базового квантователя. | |
Для тензора, квантованного с помощью линейного (аффинного) поканального квантования, возвращает тензор нулевых точек базового квантователя. | |
Для тензора, квантованного с помощью линейного (аффинного) поканального квантования, возвращает индекс измерения, по которому применяется поканальное квантование. | |
См. | |
Заполняет тензор | |
см. | |
Версия | |
Помечает тензор как использованный этим потоком. | |
Регистрирует хук обратного прохода. | |
Регистрирует хук обратного прохода, который запускается после накопления градиента. | |
Версия | |
См. | |
Версия | |
Повторяет этот тензор вдоль указанных измерений. | |
Равно | |
Изменяет настройку записи операций над этим тензором в autograd: изменяет атрибут | |
Возвращает тензор с теми же данными и количеством элементов, что и | |
Возвращает этот тензор с той же формой, что и | |
Изменяет размер тензора | |
Изменяет размер тензора | |
Позволяет сохранять | |
Равно | |
См. | |
См. | |
См. | |
Версия | |
См. | |
Версия | |
Версия | |
Записывает все значения из тензора | |
Добавляет все значения из тензора | |
Версия | |
Сводит все значения из тензора | |
Версия | |
См. | |
Задает базовое хранилище, размер и шаги. | |
Перемещает базовое хранилище в разделяемую память. | |
| |
См. | |
Версия |
См. | |
Версия | |
См. | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
Возвращает размер тензора | |
Возвращает размер тензора | |
См. | |
Псевдоним для | |
См. | |
См. | |
Возвращает новый разреженный тензор со значениями из тензора со страйдовым форматом | |
Возвращает количество разреженных измерений в разреженном тензоре | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
См. | |
Возвращает базовое | |
Возвращает базовое | |
Возвращает смещение тензора | |
Возвращает тип базового хранилища. | |
Возвращает шаг тензора | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Суммирует тензор | |
См. | |
См. | |
См. | |
См. | |
Версия |
См. | |
Преобразует тип данных и/или устройство тензора. | |
Возвращает копию тензора в формате | |
См. | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
Возвращает тензор в виде (вложенного) списка. | |
См. | |
Создает копию с шаговым представлением | |
Возвращает разреженную копию тензора. | |
Преобразует тензор в формат хранения со сжатием строк (CSR). | |
Преобразует тензор в формат хранения со сжатием столбцов (CSC). | |
Преобразует тензор в блочно-разреженный формат хранения по строкам (BSR) с заданным размером блока. | |
Преобразует тензор в блочно-разреженный формат хранения по столбцам (BSC) с заданным размером блока. | |
См. | |
Версия | |
См. | |
Версия | |
См. | |
Версия | |
Версия | |
См. | |
Версия | |
Возвращает тип, если | |
Преобразует этот тензор к типу указанного тензора и возвращает его. | |
См. | |
См. | |
Возвращает представление исходного тензора, содержащее все срезы размера | |
Заполняет тензор | |
Возвращает уникальные элементы входного тензора. | |
Удаляет все элементы, кроме первого, из каждой группы подряд идущих эквивалентных элементов. | |
Версия | |
Возвращает тензор значений разреженного тензора COO. | |
См. | |
См. | |
Возвращает новый тензор с теми же данными, что и тензор | |
Возвращает представление этого тензора с тем же размером, что и |
См. | |
| |
См. | |
Версия | |
Возвращает копию этого объекта в памяти XPU. | |
Заполняет |
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/tensors.html