Variable、Tensor、Numpy的转换

Tensor <——> Numpy

Tensor与Numpy之间可以相互转换:
代码:

[plain] view plaincopy

  1. import torch  
  2. import numpy as np  
  3.   
  4. data = np.array([[1,2,3,4,5],[6,7,8,9,10]])  
  5. print(data)  
  6. # numpy -> tensor  
  7. data_tensor = torch.from_numpy(data)  
  8. print(data_tensor)  
  9. # tensor -> numpy  
  10. data_numpy = data_tensor.numpy()  
  11. print(data_numpy)  

输出:

[plain] view plaincopy

  1. [[ 1  2  3  4  5]  
  2. [ 6  7  8  9 10]]  
  3. tensor([[ 1,  2,  3,  4,  5],  
  4. [ 6,  7,  8,  9, 10]], dtype=torch.int32)  
  5. [[ 1  2  3  4  5]  
  6. [ 6  7  8  9 10]]  

Variable -> Numpy

Variable可以直接转为Numpy:

[plain] view plaincopy

  1. import torch  
  2. from torch.autograd import Variable  
  3.   
  4. # 定义一个Variable  
  5. data = Variable(torch.Tensor([4]),requires_grad = True)  
  6. # Variable -> Numpy  
  7. data_numpy = data.detach().numpy()  
  8. print('Numpy:',data_numpy)  

如果把requires_grad改为False,得到的是Tensor:

[plain] view plaincopy

  1. data_false = Variable(data_tensor,requires_grad = False)  
  2. print(data_false)  

输出:

tensor([4.])

Numpy ->Tensor -> Variable

但是Numpy不可以直接转为Variable,所以要借助Tensor进行转换:

[plain] view plaincopy

  1. # Numpy --> Variable ( Numpy ->Tensor -> Variable )  
  2. # 1. Numpy ->Tensor  
  3. data_tensor = torch.from_numpy(data_numpy)  
  4. print('Tensor:',data_tensor)  
  5. # 2. Tensor -> Variable  
  6. data_Variable = Variable(data_tensor,requires_grad = True)  
  7. print('Variable:',data_Variable)  

输出:

[plain] view plaincopy

  1. Numpy: [4.]  
  2. Tensor: tensor([4.])Variable: tensor([4.], requires_grad=True)  

若试图直接将Numpy转为Variable,

data_Variable = Variable(data_numpy),会出现如下错误:

来源:https://www.geek-share.com/detail/2774546287.html

你可能感兴趣的:(pytorch,深度学习,python)