PyTorch入门笔记
-
PyTorch与TensorFlow的区别:
- PyTorch:动态计算图,
Dynamic Computation Graph
- TensorFlow:静态计算图,
Static Computation Graph
- PyTorch:动态计算图,
-
PyTorch是一个基于Python的科学计算库,它有以下特点:
- 类似于NumPy,但是它可以使用GPU
- 可以用它定义深度学习模型,可以灵活地进行深度学习模型的训练和使用
-
Numpy与Tensor之间的转化:
在Torch Tensor和NumPy array之间相互转化非常容易;
Torch Tensor和NumPy array会共享内存,所以改变其中一项另一项也会变;
import torch import numpy as np a = torch.ones(5) # a = tensor([1., 1., 1., 1., 1.]) b = a.numpy() # b = array([1., 1., 1., 1., 1.], dtype=float32) # 改变numpy array里面的值 b[1] = 2 # b = array([1., 2., 1., 1., 1.], dtype=float32) # a = tensor([1., 2., 1., 1., 1.]) a的值也变了 # 把Numpy ndarray转成Torch Tensor x = np.ones(5) y = torch.from_numpy(a)
注:所有CPU上的Tensor都支持转成numpy或者从numpy转成Tensor
-
CUDA Tensors
使用
.to
方法,Tensor可以被移动到别的device
上import torch if torch.cuda.is_available(): device = torch.device("cuda") y = torch.ones_like(x, device=device) # 在GPU上面取Tensor的值的时候,需要先将其移到CPU上面 y.to("cpu").data.numpy() y.cpu().data.numpy() x = x.to(device)