当前位置:首页 > 学习资源 > 讲师博文 > PyTorch中Tensor是什么? 与NumPy数组有什么区别?

PyTorch中Tensor是什么? 与NumPy数组有什么区别? 时间:2026-11-11      来源:华清远见

引言

如果你刚接触 PyTorch,第一个问题往往是:Tensor 到底是什么?它和 NumPy 的 ndarray 看起来很像,究竟有何不同?

简单来说,Tensor 是 PyTorch 中最核心的数据结构,是一个支持 GPU 加速和自动微分的多维数组。而 NumPy 的 ndarray 是 Python 科学生态中最基础的多维数组,只运行在 CPU 上。本文将带你一次性搞懂两者的区别。

一、什么是 PyTorch Tensor?

Tensor(张量)是一个在数学和物理中广泛使用的概念。在 PyTorch 中,Tensor 可以理解为任意维度的数组容器 —— 0 维是标量,1 维是向量,2 维是矩阵,3 维及以上就是高维张量。

核心能力:

1. GPU 加速:将 Tensor 放到 GPU 上(.cuda() 或 .to('cuda')),计算速度提升数十倍。

2. 自动微分:Tensor 支持 Autograd,自动计算梯度,是神经网络反向传播的基础。

3. 动态计算图:每次前向传播构建新的计算图,调试灵活,符合 Python 直觉。

二、什么是 NumPy ndarray?

NumPy(Numerical Python)是 Python 数据科学的基石。其核心数据结构 ndarray(N-dimensional array)提供了高效的多维数组运算,底层用 C 实现,速度远快于 Python 原生列表。

NumPy 擅长矩阵运算、线性代数、傅里叶变换等,几乎所有 Python 数据工具(Pandas、SciPy、Scikit-learn)都构建在其之上。但它无法在 GPU 上运行,也没有自动微分能力。

三、五大核心区别

3.1 计算设备:GPU vs CPU

这是最根本的区别。NumPy 只能在 CPU 上运行;PyTorch Tensor 可以无缝切换到 GPU,只需一行 .cuda(),矩阵运算即可获得 10~100 倍加速。

示例:

3.2 自动微分(Autograd)

Tensor 的 requires_grad=True 会追踪所有操作,构建计算图,自动计算梯度。这是训练神经网络的关键。NumPy 完全没有梯度计算能力。

3.3 计算图

PyTorch 使用动态计算图(Define-by-Run),每次前向传播都会重新构建。这意味着可以使用 Python 原生的 if、for 等控制流,调试也像普通 Python 代码一样方便。

3.4 互转与内存共享

Tensor 和 ndarray 可以轻松互转。特别地,CPU 上的 Tensor 与 NumPy 数组共享内存,一个变化会影响另一个,非常高效。

3.5 生态系统

NumPy:Pandas、SciPy、Matplotlib、Scikit-learn 等传统数据科学工具的基础。

PyTorch:TorchVision、TorchText、TorchAudio 以及 HuggingFace 等深度学习框架的基石。

四、总结

Tensor 可以理解为 NumPy ndarray 的 GPU + 自动微分版本。如果只做传统数据分析,NumPy 足够;但一旦涉及神经网络训练,Tensor 不可或缺。

掌握 Tensor 是 PyTorch 入门的第一步,理解它和 NumPy 的关系与区别,能帮你更快地上手深度学习。希望本文对你有所帮助!

上一篇:目标检测中的非极大值抑制(NMS)是什么?

下一篇:没有了

戳我查看嵌入式每月就业风云榜

点我了解华清远见高校学霸学习秘籍

猜你关心企业是如何评价华清学员的

干货分享
相关新闻
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2026 北京华清远见科技发展有限公司 版权所有 ,京ICP备16055225号-5,京公海网安备11010802025203号

回到顶部