*My post explains how to create and acceess a tensor.
to() can do device conversion as shown below:
*Memos:
-
to()
can be used with a tensor but not with torch. - The 1st argument with a tensor is
device
(Optional-Defalut:None
-Type:str
,int
or device()): *Memos:- If it's
None
, the device of a tensor is not converted. -
cpu
,cuda
,ipu
,xpu
,mkldnn
,opengl
,opencl
,ideep
,hip
,ve
,fpga
,ort
,xla
,lazy
,vulkan
,mps
,meta
,hpu
,mtia
orprivateuseone
can be set todevice
. - Setting
0
todevice
usescuda
(GPU). *The number must be zero or positive. - My post explains device().
- If it's
- A copied tensor can be created.
import torch
cpu_tensor = torch.tensor([0, 1, 2])
cpu_tensor.device
# device(type='cpu')
cpu_tensor.to().device
# device(type='cpu')
gpu_tensor = cpu_tensor.to(device='cuda:0')
gpu_tensor = cpu_tensor.to(device='cuda')
gpu_tensor = cpu_tensor.to(device=0)
gpu_tensor = cpu_tensor.to(device=torch.device(device='cuda:0'))
gpu_tensor = cpu_tensor.to(device=torch.device(device='cuda'))
gpu_tensor = cpu_tensor.to(device=torch.device(device=0))
gpu_tensor = cpu_tensor.to(device=torch.device(type='cuda', index=0))
gpu_tensor = cpu_tensor.to(device=torch.device(type='cuda'))
gpu_tensor.device
# device(type='cuda', index=0)
gpu_tensor.to().device
# device(type='cuda', index=0)
cpu_tensor = gpu_tensor.to(device='cpu')
cpu_tensor.device
# device(type='cpu')
cuda() and cpu() can change the device of a tensor to GPU(CUDA) and CPU respectively as shwon below:
*Memos:
-
cuda()
orcpu()
can be used with a tensor but not withtorch
. - For
cuda()
, the 1st argument with a tensor isdevice
(Optional-Default:None
-Type:str
,int
or device()). *Memos: - A copied tensor is created.
import torch
cpu_tensor = torch.tensor([0, 1, 2])
cpu_tensor.device
# device(type='cpu')
gpu_tensor = cpu_tensor.cuda()
gpu_tensor = cpu_tensor.cuda(device='cuda:0')
gpu_tensor = cpu_tensor.cuda(device='cuda')
gpu_tensor = cpu_tensor.cuda(device=0)
gpu_tensor = cpu_tensor.cuda(device=torch.device(device='cuda:0'))
gpu_tensor = cpu_tensor.cuda(device=torch.device(device='cuda'))
gpu_tensor = cpu_tensor.cuda(device=torch.device(device=0))
gpu_tensor = cpu_tensor.cuda(device=torch.device(type='cuda', index=0))
gpu_tensor = cpu_tensor.cuda(device=torch.device(type='cuda'))
gpu_tensor.device
# device(type='cuda', index=0)
cpu_tensor = gpu_tensor.cpu()
cpu_tensor.device
# device(type='cpu')
from_numpy() can convert a NumPy array to a PyTorch tensor as shown below:
*Memos:
-
from_numpy()
can be used withtorch
but not with a tensor. - The 1st argument with
torch
(Required-Type:ndarray
). *There is no keyword argument. - The type of a NumPy array is also inherited to a PyTorch tensor.
import torch
my_array = np.array([0., 1., 2.])
my_array.dtype
# dtype('float64')
my_tensor = torch.from_numpy(my_array)
my_tensor
# tensor([0., 1., 2.], dtype=torch.float64)
numpy() can convert a PyTorch tensor to a NumPy array as shown below:
*Memos:
-
numpy()
can be used with a tensor but not withtorch
. - There is
force
argument with a tensor(Optional-Default:False
-Type:bool
). *Memos:- If it's
True
, a GPU(CUDA) PyTorch tensor can be converted to a NumPy array which may be a copy. -
force=
must be used.
- If it's
- The type of a PyTorch tensor is also inherited to a NumPy array.
import torch
my_tensor = torch.tensor([0., 1., 2.])
my_tensor.dtype
# torch.float32
my_array = my_tensor.numpy()
my_array
# array([0., 1., 2.], dtype=float32)
my_tensor = torch.tensor([0., 1., 2.], device='cuda:0')
my_tensor.numpy(force=True)
# array([0., 1., 2.], dtype=float32)
my_tensor = torch.tensor([0., 1., 2.], device='cuda:0')
my_tensor.numpy()
my_tensor.numpy(force=False)
# Error
Top comments (0)