Tensor 和 Numpy 相关操作

目录

1. 介绍

2. numpy 和 tensor 的转换

2.1 numpy ---> tensor

2.2 Tensor 可以在GPU上运行

2.3 tensor ---> numpy

2.4 Summary

3. 读取图片的相关操作

3.1 Image 读取图片

3.2 image ---> numpy ----> tensor

3.3 显示图像


1. 介绍

Numpy :处理多维数组 + 读取图片

Tensor : 张量,可以理解为多维数组。tensor 是神经网络传递的基本数据,pytorch中的重要数据结构,和numpy的ndarrays相似。但可以用于GPU加速 + 反向传播

一般来说神经网络工作的基本流程是:

Image读取图片 -----> numpy 读取数据 -----> 转为tensor用于model训练 -----> 输出结果仍为tensor  ------> 转为 numpy 绘制图像

  • Image.open() 读取图像,产生的数据是image类型
  • numpy 读取image类型的图像,生成ndarray类型的数据
  • torch.from_numpy() 将array数据变成tensor类型用于网络训练

因此,numpy 用于读取数据,tensor用于网络训练

2. numpy 和 tensor 的转换

建立一个numpy数据,可以发现,np1的数据类型是ndarray 

2.1 numpy ---> tensor

 接下来将np1转为tensor数据,代码为

torch.from_numpy()   #  np -----> tensor

2.2 Tensor 可以在GPU上运行

Tensor 和 numpy 的区别之一就是 tensor 可以运行在 GPU 上

如图,tensor1 输出的时候,显示了一个cuda 

 

Tensor 可以运行在GPU上,也可以运行在CPU上

Numpy 可以运行在CPU上,但不可以运行在GPU上

 如图,相关的代码为

 

2.3 tensor ---> numpy

tensor 转为 numpy 的方法为:tensor变量.numpy()

因为numpy不能在 GPU 上面运行,所有如果tensor已经在GPU运行的话,需要先将tensor放到cpu上面,再转为numpy

因此下面的会报错

 先将tensor放到cpu上面即可

 

2.4 Summary

numpy 和 tensor 相互转换的代码为:

  • torch.from_numpy()   # numpy ----> tensor
  • tensor.numpy()             # tensor ----> numpy

需要注意的是,tensor 可以在 GPU 或者 CPU 上运行,而numpy只能在 CPU上面运行。所以,当tensor转为numpy 的时候,需要先将tensor放到cpu上

  • tensor1.cuda()     # GPU  和 tensor.to('cuda') 一个意思  
  • tensor1.cpu()       # CPU  和 tensor.to('cpu') 一个意思 

model在训练的时候,往往参数都非常多,基本上net都是在GPU训练。而训练结束,预测图像基本上也都是在GPU上计算。所以在最后显示的时候,需要将网络输出的tensor先放到cpu

然后再用numpy输出

而numpy ----> tensor用的不多,是为了其他预处理的一些操作,往往将这一过程在 transform 里面实现了。例如ToTensor()

3. 读取图片的相关操作

3.1 Image 读取图片

PIL 全称是 Python Imaging Library ,是 Python 平台一个功能非常强大而且简单易用的图像处理库

PIL 当中的 Image 可以用来读取图像,首先导入Image模块

然后利用 Image.open() 读取图像,如图,读取到的数据类型是image类型

 

3.2 image ---> numpy ----> tensor

image -----> numpy:

 

numpy ------> tensor:

 

将tensor 部署到 GPU 训练,然后转到 CPU ,最后转为 numpy

 

3.3 显示图像

显示图像为:

 

 

 当然,picture = Image.open() 就是读取图像的,因此plt.imshow(picture) 也是可以的

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

听风吹等浪起

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

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

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

打赏作者

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

抵扣说明:

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

余额充值