首页  

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提问的技巧

中国家庭存款八个等级

执行不是做事,而是做成事