Pytorch Tensor与Variable、Numpy
Pytorch作为一种非常高效便捷的深度学习框架,其主要优点在于可以与Numpy无缝连接,所以下面我们来看一下Pytorch Tensor(CPU & GPU)与Numpy中的Narray之间的相互转换:
1.类间转换
因为Tensor作为一种数据类型,也有Long、Float、Int等类型之分,因此首先来介绍一下,这些类型之间的转换(无论GPU、CPU都通用):
e.g.
- Torch.LongTensor ==> Torch.FloatTensor:
- data.float()
- 利用Type函数:
- data.type(torch.FloatTensor)
2.设备转换
作为一种深度学习框架,Pytorch既可以在CPU上运行也可以在GPU上运行,因此下面来介绍一下CPU与GPU之间的转换问题:
e.g.
1.Pytorch Tensor CPU<==>GPU
- Tensor_CPU ==> Tensor_GPU:
- data.cuda()
- Tensor_GPU ==> Tensor_CPU:
- data.cpu()
3.Variable & Tensor
Variable变量转换成普通的Tensor,其实可以理解Variable为一个Wrapper,里头的data就是Tensor. 如果Var是Variable变量,使用Var.data获得Tensor变量
e.g.
- Variable==> Tensor:
- Variable.data
4.Tensor & Numpy Array
e.g.
- Tensor ==> Numpy
- data.numpy()
- Numpy ==> Tensor
- torch.from_numpy(data)