关于Torch Tensor 和 Numpy array之间的转换
Torch Tenser和Numpy array共享底层的内存空间,因此改变其中一个的值,另一个也会随之被改变。
Torch Tensor 转 Numpy array
a=torch.ones(5)
print(a)
b=a.numpy()
print(b)
a.add_(1)
print(a)
print(b)
Numpy array 转 Torch Tensor
a=np.ones(5)
b=torch.from_numpy(a)
print(a)
np.add(a,1,out=a)
print(a)
print(b)
注意:所有在CPU上的Tensors,除了CharTensor,都可以转换为Numpy array并可以反向转换。
# 关于Cuda Tensor:Tensors可以用.to()方法来将其移动到任意设备上。
# 如果服务器上已经安装了GPU和CUDA
if torch.cuda.is_available():
# 定义一个设备对象,这里指定成CUDA,即使用GPU
device=torch.device("cuda")
# 直接在GPU上创建一个Tensor
y=torch.ones_like(x,device=device)
# 将在CPU上面的X张量移动到GPU上面
x=x.to(device)
# x和y 都在GPU上面,才能支持加法运算
z=x+y
# 此处的张量z在GPU上面
print(z)
# 也可以将Z转移到CPU上面,并同时指定张量元素的数据类型
print(z.to("cpu", torch.double))
浙公网安备 33010602011771号