Rate this Page

torch.Tensor.to#

Tensor.to(*args,**kwargs)Tensor#

Performs Tensor dtype and/or device conversion. Atorch.dtype andtorch.device areinferred from the arguments ofself.to(*args,**kwargs).

Note

If theself Tensor alreadyhas the correcttorch.dtype andtorch.device, thenself is returned.Otherwise, the returned tensor is a copy ofself with the desiredtorch.dtype andtorch.device.

Note

Ifself requires gradients (requires_grad=True) but the targetdtype specified is an integer type, the returned tensor will implicitlysetrequires_grad=False. This is because only tensors withfloating-point or complex dtypes can require gradients.

Here are the ways to callto:

to(dtype,non_blocking=False,copy=False,memory_format=torch.preserve_format)Tensor

Returns a Tensor with the specifieddtype

Args:

memory_format (torch.memory_format, optional): the desired memory format ofreturned Tensor. Default:torch.preserve_format.

Note

According toC++ type conversion rules,converting floating point value to integer type will truncate the fractional part.If the truncated value cannot fit into the target type (e.g., castingtorch.inf totorch.long),the behavior is undefined and the result may vary across platforms.

torch.to(device=None,dtype=None,non_blocking=False,copy=False,memory_format=torch.preserve_format)Tensor

Returns a Tensor with the specifieddevice and (optional)dtype. Ifdtype isNone it is inferred to beself.dtype.Whennon_blocking is set toTrue, the function attempts to performthe conversion asynchronously with respect to the host, if possible. Thisasynchronous behavior applies to both pinned and pageable memory. However,caution is advised when using this feature. For more information, refer to thetutorial on good usage of non_blocking and pin_memory.Whencopy is set, a new Tensor is created even when the Tensoralready matches the desired conversion.

Args:

memory_format (torch.memory_format, optional): the desired memory format ofreturned Tensor. Default:torch.preserve_format.

torch.to(other,non_blocking=False,copy=False)Tensor

Returns a Tensor with sametorch.dtype andtorch.device asthe Tensorother.Whennon_blocking is set toTrue, the function attempts to performthe conversion asynchronously with respect to the host, if possible. Thisasynchronous behavior applies to both pinned and pageable memory. However,caution is advised when using this feature. For more information, refer to thetutorial on good usage of non_blocking and pin_memory.Whencopy is set, a new Tensor is created even when the Tensoralready matches the desired conversion.

Example:

>>>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')