torch.Tensor.to
-
Tensor.to(*args, **kwargs) → Tensor -
Выполняет преобразование типа данных и/или устройства тензора.
torch.dtypeиtorch.deviceопределяются на основе аргументовself.to(*args, **kwargs).Примечание
Если тензор
selfуже имеет нужныеtorch.dtypeиtorch.device, возвращаетсяself. В противном случае возвращаемый тензор является копиейselfс нужнымиtorch.dtypeиtorch.device.Примечание
Если для
selfтребуются градиенты (requires_grad=True), но указанный целевойdtypeявляется целочисленным типом, для возвращаемого тензора неявно устанавливаетсяrequires_grad=False. Это связано с тем, что градиенты могут требоваться только для тензоров с типами данных с плавающей точкой или комплексными типами данных.Вызвать
toможно следующими способами:- to(dtype, non_blocking=False, copy=False, memory_format=torch.preserve_format) Tensor
-
Возвращает тензор с указанным
dtype- Аргументы:
-
memory_format (
torch.memory_format, необязательно): желаемый формат памяти возвращаемого тензора. По умолчанию:torch.preserve_format.
Примечание
Согласно правилам преобразования типов C++, при преобразовании значения с плавающей точкой в целочисленный тип дробная часть отбрасывается. Если полученное после усечения значение не помещается в целевой тип (например, при преобразовании
torch.infвtorch.long), поведение не определено, и результат может различаться на разных платформах.- torch.to(device=None, dtype=None, non_blocking=False, copy=False, memory_format=torch.preserve_format) Tensor
-
Возвращает тензор с указанными
deviceи (необязательно)dtype. ЕслиdtypeравноNone, оно определяется какself.dtype. Еслиnon_blockingустановлено вTrue, функция по возможности пытается выполнить преобразование асинхронно относительно хоста. Такое асинхронное поведение применяется как к закреплённой, так и к страничной памяти. Однако при использовании этой возможности следует соблюдать осторожность. Подробнее см. в руководстве по правильному использованию non_blocking и pin_memory. Если установленоcopy, новый тензор создаётся, даже если тензор уже соответствует нужному преобразованию.- Аргументы:
-
memory_format (
torch.memory_format, необязательно): желаемый формат памяти возвращаемого тензора. По умолчанию:torch.preserve_format.
- torch.to(other, non_blocking=False, copy=False) Tensor
-
Возвращает тензор с теми же
torch.dtypeиtorch.device, что и у тензораother. Еслиnon_blockingустановлено вTrue, функция по возможности пытается выполнить преобразование асинхронно относительно хоста. Такое асинхронное поведение применяется как к закреплённой, так и к страничной памяти. Однако при использовании этой возможности следует соблюдать осторожность. Подробнее см. в руководстве по правильному использованию non_blocking и pin_memory. Если установленоcopy, новый тензор создаётся, даже если тензор уже соответствует нужному преобразованию.
Примечание
Если
non_blockingравноTrueи преобразование выполняется в потоке CUDA, отличном от потока по умолчанию, вызывающий код отвечает за правильную синхронизацию между потоками. Описание необходимого шаблона см. в разделе потоки CUDA.Пример:
>>> tensor = torch.randn(2, 2) # Initially dtype=float32, device=cpu >>> tensor.to(torch.float64) tensor([[-0.5044, 0.0005], [ 0.3310, -0.0584]], dtype=torch.float64) >>> cuda0 = torch.device('cuda:0') >>> tensor.to(cuda0) tensor([[-0.5044, 0.0005], [ 0.3310, -0.0584]], device='cuda:0') >>> tensor.to(cuda0, dtype=torch.float64) tensor([[-0.5044, 0.0005], [ 0.3310, -0.0584]], dtype=torch.float64, device='cuda:0') >>> other = torch.randn((), dtype=torch.float64, device=cuda0) >>> tensor.to(other, non_blocking=True) tensor([[-0.5044, 0.0005], [ 0.3310, -0.0584]], dtype=torch.float64, device='cuda:0')
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.Tensor.to.html