numpy 与 pytorch
所属分类 AI
浏览量 9
NumPy VS PyTorch
特性 NumPy PyTorch
核心用途 科学计算、数据处理 深度学习、神经网络
GPU支持 不支持 支持
自动求导 不支持 不支持
深度学习工具 无 预构建层、优化器等
动态计算图 不适用 支持
选择建议:
若仅需处理数据或实现传统算法,使用 NumPy
若需构建深度学习模型或利用 GPU 加速,使用 PyTorch
1. 核心定位与用途
NumPy
Python 科学计算的基础库,提供多维数组对象(ndarray)和 各种数学运算函数
主要用于数据处理、数值计算和科学计算,不支持 GPU 加速,适用于本地小规模数据处理
PyTorch
深度学习框架,基于 Torch 库开发
提供动态计算图、自动求导、GPU 加速等功能,专为神经网络和深度学习设计,支持模型训练、推理和部署
2. 数据结构对比
NumPy: ndarray
多维数组,支持各种数据类型(如 int, float, bool)
不支持 GPU 加速,所有计算在 CPU 上进行
import numpy as np
a = np.array([[1, 2], [3, 4]])
print(a.shape) # 输出: (2, 2)
PyTorch: Tensor
类似于 NumPy 的 ndarray,但支持 GPU 计算和自动求导
与深度学习框架无缝集成,可作为模型输入 / 输出
import torch
a = torch.tensor([[1, 2], [3, 4]])
print(a.shape) # 输出: torch.Size([2, 2])
3. GPU 加速
NumPy:所有操作在 CPU 上执行,适合小规模数据处理
PyTorch:通过 .to(device) 将张量移至 GPU 进行加速,适合大规模深度学习训练
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
x = torch.tensor([1, 2, 3]).to(device) # 移至 GPU
4. 自动求导
NumPy:需要手动计算梯度
PyTorch:通过 requires_grad=True 和 backward() 自动计算梯度,简化神经网络训练
x = torch.tensor(2.0, requires_grad=True)
y = x**2
y.backward() # 自动计算 dy/dx
print(x.grad) # 输出: 4.0
5. 深度学习支持
NumPy:不直接支持深度学习模型,需手动实现网络结构和优化算法
PyTorch:
提供预构建的神经网络层(如 torch.nn.Conv2d)、优化器(如 torch.optim.Adam)
和 损失函数(如 torch.nn.CrossEntropyLoss)
model = torch.nn.Sequential(
torch.nn.Linear(10, 20),
torch.nn.ReLU(),
torch.nn.Linear(20, 2)
)
6. 数据转换
两者可通过 torch.from_numpy() 和 .numpy() 互相转换
# NumPy >> PyTorch
np_array = np.array([1, 2, 3])
torch_tensor = torch.from_numpy(np_array)
# PyTorch >> NumPy
torch_tensor = torch.tensor([1, 2, 3])
np_array = torch_tensor.numpy()
7. 应用场景
NumPy:
数据预处理、特征工程
传统机器学习算法(如 scikit-learn)的输入处理
科学计算和数值分析
PyTorch:
深度学习模型开发(计算机视觉、自然语言处理等)
研究原型快速迭代(动态计算图优势)
模型部署(支持 ONNX 导出)
上一篇
下一篇
python 项目目录结构
可发布Python包 项目示例
pytorch 快速入门
向GPT提问的技巧
中国家庭存款八个等级
执行不是做事,而是做成事