torch.Tensor
A torch.Tensor is a multi-dimensional matrix containing elements of a single data type.
Типы данных
Torch defines 10 tensor types with CPU and GPU variants, которые представлены ниже:
Тип данных | dtype | Тензор на CPU | Тензор на GPU |
|---|---|---|---|
32-битное число с плавающей точкой |
|
|
|
64-битное число с плавающей точкой |
|
|
|
16-битное число с плавающей точкой 1 |
|
|
|
16-битное число с плавающей точкой 2 |
|
|
|
32-битное комплексное число |
| ||
64-битное комплексное число |
| ||
128-битное комплексное число |
| ||
8-битное целое число (без знака) |
|
|
|
8-битное целое число (со знаком) |
|
|
|
16-битное целое число (со знаком) |
|
|
|
32-битное целое число (со знаком) |
|
|
|
64-битное целое число (со знаком) |
|
|
|
Булево |
|
|
|
Квантизованное 8-битное целое число (без знака) |
|
| / |
Квантизованное 8-битное целое число (со знаком) |
|
| / |
Квантизованное 32-битное целое число (со знаком) |
|
| / |
Квантизованное 4-битное целое число (без знака) 3 |
|
| / |
-
1 -
Иногда обозначается как binary16: использует 1 бит для знака, 5 бит для порядка и 10 бит для мантиссы. Полезно, когда важна точность в ущерб диапазону.
-
2 -
Иногда обозначается как Brain Floating Point: использует 1 бит для знака, 8 бит для порядка и 7 бит для мантиссы. Полезно, когда важен диапазон, так как имеет такое же количество битов порядка, как
float32. -
3 -
Квантизованное 4-битное целое число хранится как 8-битное целое число со знаком. В настоящее время поддерживается только в операции EmbeddingBag.
torch.Tensor является псевдонимом для стандартного типа тензора (torch.FloatTensor).
Инициализация и базовые операции
Тензор можно создать из 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(). - Для создания тензора с указанным размером используйте операции создания тензоров (см. Операции создания).
- Для создания тензора с тем же размером (и похожими типами) что и другой тензор, используйте операции создания тензоров (см. Операции создания).
- Для создания тензора с аналогичным типом, но разным размером, по сравнению с другим тензором, используйте соответствующие операции создания.
- Для создания тензора с предопределенными данными используйте
-
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 -
Возвращает представление матрицы (2-мерного тензора) с сопряжением и транспонированием.
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() -> Тензор | |
acosh_() -> Тензор | |
Возвращает копию объекта в оперативной памяти. | |
См. | |
Возвращает копию объекта в памяти CUDA. | |
См. | |
См. | |
См. | |
Используется метод вместо | |
См. | |
Используется метод вместо | |
| |
| |
| |
Возвращает адрес первого элемента тензора в памяти. | |
См. | |
Для квантизованного тензора, деквантизует его и возвращает тензор с плавающей точкой. | |
См. | |
Возвращает количество плотных измерений в разреженном тензоре. | |
Возвращает новый тензор, отключенный от текущей вычислительной графы. | |
Отключает тензор от вычислительной графы, которая его создала, превращая его в лист. | |
См. | |
См. |
См. | |
Заполняет главную диагональ тензора, имеющего по крайней мере 2 измерения. | |
См. | |
См. | |
См. | |
См. | |
Метод-обёртка для | |
Возвращает количество измерений тензора. | |
Возвращает кортеж целых чисел, описывающий порядок измерений или физическую структуру тензора. | |
См. | |
См. | |
Метод-обёртка для | |
См. | |
Метод-обёртка для | |
См. | |
Эквивалентно | |
См. | |
Возвращает размер одного элемента в байтах. | |
См. | |
Метод-обёртка для | |
См. | |
См. | |
Метод-обёртка для | |
См. | |
Метод-обёртка для | |
См. | |
Метод-обёртка для | |
См. | |
Метод-обёртка для | |
См. | |
Метод-обёртка для | |
Возвращает новый вид тензора с расширенными размерами одиночных измерений. | |
Расширяет тензор до размера тензора. | |
Заполняет тензор элементами, сгенерированными из экспоненциального распределения: | |
См. | |
Метод-обёртка для |
Заполняет тензор заданным значением. |
См. | |
См. | |
См. | |
См. | |
Эквивалентно | |
Метод замены для | |
См. | |
Метод замены для | |
Метод замены для | |
См. | |
Метод замены для | |
См. | |
Метод замены для | |
См. | |
См. | |
См. | |
Метод замены для | |
См. | |
Метод замены для | |
Метод замены для | |
Заполняет тензор | |
См. | |
См. | |
Для тензоров CUDA эта функция возвращает порядковый номер устройства GPU, на котором расположен тензор. | |
См. | |
Метод замены для | |
См. | |
Метод замены для | |
Эквивалентно | |
См. | |
См. | |
См. | |
Вместо | |
См. | |
Метод для изменения объекта, соответствующий | |
См. | |
Вместо | |
См. | |
Вместо | |
Накопление элементов | |
Версия метода, не изменяющая исходный объект, для | |
Копирует элементы из | |
Версия метода, не изменяющая исходный объект, для | |
Заполняет элементы тензора | |
Версия метода, не изменяющая исходный объект, для | |
Размещает значения из тензора | |
Версия метода, не изменяющая исходный объект, для | |
Накопление элементов | |
Возвращает тензор индексов для разреженного тензора COO. | |
См. | |
| |
Для квантованного тензора | |
См. | |
См. | |
См. | |
См. | |
См. | |
См. | |
См. | |
Возвращает True, если тензор | |
Возвращает True, если тип данных тензора | |
Возвращает True, если флаг сопряжения тензора |
Возвращает True, если тип данных тензора |
См. | |
Все тензоры, у которых | |
Возвращает true, если этот тензор находится в закрепленной памяти. | |
Возвращает True, если оба тензора указывают на одну и ту же память (одинаковый хранилище, смещение, размер и шаг). | |
Проверяет, находится ли тензор в общей памяти. | |
Возвращает True, если тип данных | |
Является | |
См. | |
См. | |
Возвращает значение этого тензора как стандартного числа Python. | |
См. | |
См. | |
Вместо | |
См. | |
Вместо | |
См. | |
Вместо | |
См. | |
Вместо | |
См. | |
Вместо | |
См. | |
Вместо | |
См. | |
Вместо | |
См. | |
См. | |
Вместо | |
См. | |
Вместо | |
См. | |
Вместо | |
Заполняет тензор | |
Внутрипоследовательная версия | |
Внутрипоследовательная версия | |
Внутрипоследовательная версия | |
Внутрипоследовательная версия | |
См. | |
Внутрипоследовательная версия | |
Эквивалентно | |
См. | |
Внутрипоследовательная версия | |
lt(other) -> Tensor | |
Внутрипоследовательная версия | |
См. | |
См. | |
Создаёт экземпляр | |
Применяет | |
Копирует элементы из тензора | |
Внешняя версия | |
Заполняет элементы тензора | |
Внешняя версия | |
См. | |
|
Примечание
| |
См. | |
См. | |
См. | |
См. | |
См. |
См. | |
См. | |
См. | |
См. | |
См. | |
См. | |
См. | |
См. | |
См. | |
Метод, выполняющий операцию над исходным массивом (inplace) | |
См. | |
Метод, выполняющий операцию над исходным массивом (inplace) | |
См. | |
См. | |
Метод, выполняющий операцию над исходным массивом (inplace) | |
См. | |
См. | |
См. | |
Псевдоним для | |
См. | |
Метод, выполняющий операцию над исходным массивом (inplace) | |
См. | |
Метод, выполняющий операцию над исходным массивом (inplace) | |
См. | |
Метод, выполняющий операцию над исходным массивом (inplace) | |
См. | |
Метод, выполняющий операцию над исходным массивом (inplace) | |
См. | |
Метод, выполняющий операцию над исходным массивом (inplace) | |
Псевдоним для | |
Метод, выполняющий операцию над исходным массивом (inplace) | |
См. |
См. |
Заполняет тензор элементами, сгенерированными из нормального распределения, параметризованного | |
См. | |
Возвращает тензор как массив NumPy | |
См. | |
См. | |
См. | |
См. | |
Копирует тензор в закреплённую память, если он ещё не закреплён. | |
См. | |
Функция | |
См. | |
См. | |
Функция | |
См. | |
Копирует элементы из | |
См. | |
Возвращает схему квантования данного QTensor. | |
См. | |
Для тензора, квантованного линейным (аффинным) квантованием, возвращает масштаб базового квантователя. | |
Для тензора, квантованного линейным (аффинным) квантованием, возвращает смещение базового квантователя. | |
Для тензора, квантованного линейным (аффинным) квантованием по каналам, возвращает тензор масштабов базового квантователя. | |
Для тензора, квантованного линейным (аффинным) квантованием по каналам, возвращает тензор смещений базового квантователя. | |
Для тензора, квантованного линейным (аффинным) квантованием по каналам, возвращает индекс размерности, по которой применяется квантование по каналам. | |
См. | |
Заполняет тензор | |
см. | |
Функция | |
Убеждается, что память тензора не используется повторно для другого тензора до тех пор, пока не завершится вся текущая работа, помещённая в очередь на | |
Регистрирует обратный хук. | |
Регистрирует обратный хук, выполняющийся после накопления градиента. | |
Функция | |
См. |
Вместо | |
Повторяет этот тензор вдоль указанных измерений. | |
Является | |
Изменяет, если автограду следует записывать операции над этим тензором: устанавливает этот атрибут тензора | |
Возвращает тензор с теми же данными и числом элементов, что и | |
Возвращает этот тензор с той же формой, что и | |
Изменяет размер тензора | |
Изменяет размер тензора | |
Включает возможность заполнения | |
Является | |
См. | |
См. | |
См. | |
Вместо | |
См. | |
Вместо | |
Непрямой вариант | |
Записывает все значения из тензора | |
Добавляет все значения из тензора | |
Непрямой вариант | |
Применяет сокращение к всем значениям из тензора | |
Непрямой вариант | |
См. | |
Устанавливает базовое хранилище, размер и смещения. | |
Перемещает базовое хранилище в общую память. | |
| |
См. | |
Вместо | |
См. | |
Вместо | |
См. | |
См. |
Используйте этот метод вместо | |
См. | |
Метод для изменения значения на месте, эквивалентный | |
См. | |
Метод для изменения значения на месте, эквивалентный | |
См. | |
Метод для изменения значения на месте, эквивалентный | |
См. | |
Метод для изменения значения на месте, эквивалентный | |
См. | |
Метод для изменения значения на месте, эквивалентный | |
Возвращает размер тензора | |
Возвращает размер тензора | |
См. | |
Псевдоним для | |
См. | |
См. | |
Возвращает новый разреженный тензор | |
Возвращает количество разреженных измерений в разреженном тензоре | |
См. | |
Метод для изменения значения на месте, эквивалентный | |
См. | |
Метод для изменения значения на месте, эквивалентный | |
См. | |
Метод для изменения значения на месте, эквивалентный | |
См. | |
См. | |
Возвращает базовое хранилище | |
Возвращает базовое хранилище | |
Возвращает смещение тензора | |
Возвращает тип базового хранилища. | |
Возвращает шаг тензора | |
См. | |
Метод для изменения значения на месте, эквивалентный |
См. |
Временная версия | |
См. | |
Сумма | |
См. | |
См. | |
См. | |
См. | |
Временная версия | |
См. | |
Выполняет преобразование типа и/или устройства тензора. | |
Возвращает копию тензора в формате | |
См. | |
См. | |
Временная версия | |
См. | |
Временная версия | |
См. | |
Временная версия | |
См. | |
Временная версия | |
Возвращает тензор как (вложенный) список. | |
См. | |
Создает перемещаемую копию | |
Возвращает разреженную копию тензора. | |
Преобразует тензор в формат сжатого хранения строк (CSR). | |
Преобразует тензор в формат сжатого хранения столбцов (CSC). | |
Преобразует тензор в формат сжатого хранения блочных строк (BSR) заданного размера блока. | |
Преобразует тензор в формат сжатого хранения блочных столбцов (BSC) заданного размера блока. | |
См. | |
Временная версия | |
См. | |
Временная версия | |
См. |
Вместо | |
Метод, выполняемый на месте, для | |
См. | |
Метод, выполняемый на месте, для | |
Возвращает тип, если | |
Возвращает этот тензор, преобразованный к типу заданного тензора. | |
См. | |
См. | |
Возвращает представление исходного тензора, содержащее все срезы размером | |
Заполняет тензор | |
Возвращает уникальные элементы входного тензора. | |
Удаляет все, кроме первого элемента, из каждой последовательной группы эквивалентных элементов. | |
Метод, выполняемый на месте, для | |
Возвращает тензор значений для разреженного тензора COO. | |
См. | |
См. | |
Возвращает новый тензор с теми же данными, что и тензор | |
Представляет этот тензор в виде того же размера, что и | |
См. | |
Эквивалентно | |
См. | |
Метод, выполняемый на месте, для | |
Заполняет тензор |
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/tensors.html