当前位置: 首页 > news >正文

tensor转numpy,numpy转tensor

在PyTorch中,Tensor与NumPy数组的相互转换是常用操作,以下是具体方法和注意事项:

1. Tensor 转 NumPy 数组

使用 Tensor 的 .numpy() 方法,适用于 CPU 上的 Tensor。

示例:
import torch
import numpy as np# 创建CPU上的Tensor
cpu_tensor = torch.tensor([1, 2, 3, 4])
# 转换为NumPy数组
numpy_array = cpu_tensor.numpy()print(type(numpy_array))  # <class 'numpy.ndarray'>
print(numpy_array)        # [1 2 3 4]
注意事项:
  • 共享内存:CPU Tensor 与转换后的 NumPy 数组共享内存,修改其中一个会影响另一个:
    cpu_tensor[0] = 100
    print(numpy_array)  # [100 2 3 4](被同步修改)
    
  • GPU Tensor 需先移至 CPU:若 Tensor 在 GPU 上,需先用 .cpu() 转移到 CPU 再转换:
    gpu_tensor = torch.tensor([1, 2, 3]).cuda()  # GPU上的Tensor
    numpy_array = gpu_tensor.cpu().numpy()       # 先转CPU再转NumPy
    
  • 带梯度的 Tensor:若 Tensor 开启了梯度跟踪(requires_grad=True),需先用 .detach() 剥离梯度:
    grad_tensor = torch.tensor([1, 2, 3], requires_grad=True)
    numpy_array = grad_tensor.detach().numpy()  # 剥离梯度后转换
    

2. NumPy 数组 转 Tensor

使用 torch.from_numpy() 方法,转换后的数据默认在 CPU 上。

示例:
import numpy as np
import torch# 创建NumPy数组
numpy_array = np.array([1, 2, 3, 4])
# 转换为Tensor
tensor = torch.from_numpy(numpy_array)print(type(tensor))  # <class 'torch.Tensor'>
print(tensor)        # tensor([1, 2, 3, 4], dtype=torch.int64)
注意事项:
  • 共享内存:与 Tensor 转 NumPy 类似,CPU 上的 Tensor 与原 NumPy 数组共享内存:
    numpy_array[0] = 100
    print(tensor)  # tensor([100,   2,   3,   4], dtype=torch.int64)(被同步修改)
    
  • 强制复制(不共享内存):若不想共享内存,可使用 torch.tensor() 重新创建(会复制数据):
    tensor = torch.tensor(numpy_array)  # 复制数据,不共享内存
    
  • 转移到 GPU:转换后若需在 GPU 上运行,可加 .cuda()
    gpu_tensor = torch.from_numpy(numpy_array).cuda()
    

总结

转换方向方法关键注意点
Tensor → NumPytensor.numpy()需在 CPU 上,共享内存;GPU 需先 .cpu()
NumPy → Tensortorch.from_numpy(numpy_array)默认在 CPU,共享内存;可加 .cuda() 移至 GPU

根据是否需要共享内存、是否在 GPU 上,选择合适的转换方式即可。

http://www.dtcms.com/a/434508.html

相关文章:

  • [创业之路-653]:社会产品与服务的分类
  • 洛谷题解P1249 最大乘积
  • Java使用easypoi填充数据到word
  • 位运算题3:将整数奇偶位互换
  • 计算机毕业设计 基于EChants的海洋气象数据可视化平台设计与实现 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
  • 卡盟网站顶图怎么做西安知名的集团门户网站建设公司
  • Python基础入门例程84-NP84 列表中第一次出现的位置
  • 基于腾讯CODING Maven的Android库发布
  • 郑州官方发布班级优化大师
  • 10.2 刷题知识点总结(1) ---- 正则表达式
  • SPI总线介绍
  • 【LeetCode_206】反转链表
  • 品牌网站建设 磐石网络的确好沈阳唐朝网络的服务内容
  • LeetCode 215. 数组中的第K个最大元素
  • 老年实训室建设:筑牢老年护理专业学员的实操能力基础
  • 【深度学习新浪潮】基于Qwen3-8B入门LoRA完整指南
  • 数据库设计与UML图
  • 影视网站的设计与实现新泰程序开发
  • 阿里pdf解析方案Logics-Parsing如何用RL攻克复杂文档解析
  • MySQL 索引失效的常见场景与原因分析
  • 四川省建设厅网站川北医学院网页制作员工作厂家
  • 从直线到环形:解锁栈、队列背后的空间与效率平衡术
  • 操作系统全解析:Windows、macOS与Linux的深度对比与选择指南(AI)
  • 网站建设推广ppt模板网站模版防被偷
  • [创业之路-647]:互联网行业的产业链
  • 甘肃省省经合局网站建设的通知知乎app开发公司
  • 计算机视觉与深度学习 | MASt3R 前馈视觉模型:原理、公式与代码实现全解析
  • 作品展示网站源码贵阳企业网站设计制作
  • 【Linux 系统】命令行参数和环境变量
  • 如何用wordpress建一个网站太原建站模板搭建