老饼讲解-深度学习 机器学习 神经网络 深度学习
pytorch入门
1.pytorch学前准备
2.pytorch的基础操作
3.pytorch的梯度计算
4.pytorch的数据
5.pytorch-小试牛刀

【转换】pytorch-tensor对象转换回numpy对象

作者 : 老饼 发表日期 : 2023-07-28 10:46:14 更新日期 : 2024-01-19 07:59:52
本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com



在pytorch的实际应用中,经常要将tensor对象转换回numpy进行进一步计算或展示

本文讲解如何将pytorch的tensor对象转换回numpy




一、  如何将tensor转换回numpy    



本节讲解如何将tensor对象转换回numpy,和需要注意的事项



01.如何将tensor转换回numpy数组    

使用numpy可以将tensor转换回numpy数组 
示例如下:

import torch
x    = torch.tensor( [[1, 2],[3, 4]])   # 生成一个tensor数据x
np_x = x.numpy()





02. 关于numpy与pytorch对象的内存共享    

必须记住,在用np_x生成x时,np_x与x是指向同一块内存的
改变x的同时会改会np_x,同样,改变np_x会改变x
  示例如下:

import torch
x = torch.tensor( [[1, 2],[3, 4]])   # 生成一个tensor数据x
np_x = x.numpy()
np_x[0] = 9999 
print('np_x:',np_x)
print('x:',x)

运行结果如下:

np_x: [[9999 9999]
          [   3    4]]
x: tensor([[9999, 9999],
           [   3,    4]])

可以看到,改变np_x时,np_x和x都改变了
如果不想这样,在转换为numpy时,就需要进行拷贝,如下

import torch
x = torch.tensor( [[1, 2],[3, 4]])   # 生成一个tensor数据x
np_x = x.numpy().copy()
np_x[0] = 9999 
print('np_x:',np_x)
print('x:',x)

运行结果如下:

np_x: [[9999 9999]
       [   3    4]]
x: tensor([[1, 2],
           [3, 4]])

可以看到,x不再受np_x的影响





二、将tensor转换回数值  


1. 如何将tensor转换回数值变量   


特别地,tensor里只有一个元素时,用item()可以将tensor转换回数值,如下

x = torch.tensor( [1])   # 生成一个tensor数据x2
x.item()











 End 





联系老饼