【python】numpy和tensor互相转换

在用pytorch训练神经网络时,常常需要在numpy的数组变量类型与pytorch中的tensor类型进行转换。

一、numpy转tensor

首先,导入需要使用的包:

import numpy as np
import torch

然后创建一个numpy类型的数组:

x = np.ones(5)
print(type(x)) # 查看x的类型

这里创建了一个一维的数组,5个都为1,我们打印一下这个x的类型显示如下:

<class 'numpy.ndarray'>

这个就说明现在x是numpy类型的一个数组,用下面的代码将x转换成tensor类型:

x = torch.tensor(x)
print(type(x))

这个打印的结果是:

<class 'torch.Tensor'> # 数明numpy转tensor成功

也可以使用:

x = torch.from_numpy(x)
二、tensor转numpy

直接上代码:

import torch
x = torch.ones(5) # 创建张量x
# tensor([1., 1., 1., 1., 1.])
x_ = x.detach().numpy() # 转换
# array([1., 1., 1., 1., 1.], dtype=float32)

也可以使用

x_= x.numpy()

主要区别在于是否使用detach(),也就是返回的新变量是否需要计算梯度。【用了detach(),不需要计算梯度了】

参考

https://www.cnblogs.com/wzyuan/p/9733433.html

https://www.cnblogs.com/kiwiwk/p/11716459.html

https://blog.csdn.net/weixin_33913332/article/details/93300411

---------------2021.4.23更新---------------------
tensor转为numpy后,遇到一个新的问题,(3,64,64)如何转为(64,64,3)

解决方法:
torch.Tensor转numpy.ndarray:

np.transpose(tensor_a.numpy(), (1, 2, 0)) # 将C x H x W 转化为 H x W x C 

https://blog.csdn.net/baidu_26646129/article/details/86712889

参考
https://blog.csdn.net/renweiyi1487/article/details/108933387

  • 38
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器不学习我学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值