Variable、Tensor、Numpy的转换

10 篇文章 1 订阅
5 篇文章 0 订阅

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值