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

PyTorch 详细安装教程及核心API使用指南

一、PyTorch简介

PyTorch 是由 Facebook AI Research (FAIR) 于2016年开发的开源深度学习框架,现已成为学术界和工业界最受欢迎的深度学习工具之一。其核心优势在于采用了动态计算图(Dynamic Computation Graph,又称"define-by-run"机制),这使得开发者能够像编写普通Python代码一样构建神经网络,并在运行时动态调整计算图结构,大大提高了研究和实验的灵活性。

在硬件加速方面,PyTorch 提供了完整的GPU加速支持:

  • 基于NVIDIA的CUDA并行计算平台
  • 使用cuDNN深度神经网络加速库
  • 支持多GPU分布式训练(通过torch.nn.DataParallel和DistributedDataParallel)
  • 提供CPU/GPU设备自动切换功能(.to(device)方法)

PyTorch的自动微分系统(Autograd)是其最重要的特性之一:

  • 自动追踪所有张量操作并构建计算图
  • 支持前向传播自动记录和反向传播自动求导
  • 提供梯度计算和参数更新的一站式解决方案
  • 允许在运行时动态修改计算路径

框架内置了丰富的神经网络组件:

  • 超过200种预定义层(如卷积层、LSTM、Transformer等)
  • 常用损失函数(交叉熵、MSE等)
  • 优化器实现(SGD、Adam等)
  • 各种激活函数和归一化层

PyTorch还提供完整的模型生命周期管理工具:

  • torchvision等生态库简化数据加载和预处理
  • TorchScript支持模型序列化和部署
  • ONNX格式导出实现跨框架兼容
  • 原生支持移动端部署(PyTorch Mobile)
  • 丰富的可视化工具(如TensorBoard集成)

在实际应用中,PyTorch被广泛用于:

  1. 计算机视觉(图像分类、目标检测)
  2. 自然语言处理(机器翻译、文本生成)
  3. 强化学习
  4. 生成对抗网络(GAN)
  5. 科学计算等领域

二、PyTorch安装指南

1. 安装前准备

(1) 检查Python版本

PyTorch 要求 Python ≥ 3.7,推荐使用 Python 3.8/3.9。(如果版本低的话可以使用命令更新python版本)

python --version  # 检查Python版本
(2) 检查CUDA(GPU用户)

PyTorch 支持 GPU 加速,需安装 NVIDIA驱动 + CUDA Toolkit

要保证你选择的CUDA版本号<=你的GPU驱动程序版本  

版本检查

在cmd里面,输入nvidia-smi查看GPU驱动程序版本:  

nvidia-smi  # 查看GPU信息
nvcc --version  # 查看CUDA版本

注意:PyTorch 版本需与 CUDA 版本匹配(如 CUDA 11.3 对应 PyTorch 1.10+)。


2. 安装PyTorch

官网地址:CUDA Toolkit Archive | NVIDIA Developer  

离线安装:

浏览器打开链接:https://download.pytorch.org/whl/cu121

找到torch,点击进入下载页面,找到适合自己cuda版本的安装包,下载即可(使用迅雷下载比较快)  

下载完成后,在Anaconda prompt界面切换到自己的虚拟环境,并将目录切换到torch安装包所在的文件夹,输入命令:

torch-2.3.1+cu121-cp310-cp310-win_amd64.whl

测试:

安装完成后,在pycharm中输入代码:

import torchprint(torch.cuda.is_available())
print(torch.__version__)

 然后再安装torchvision0.15.2和torchaudio2.0.2,版本号需要和线上安装的版本号一致

pip install torchvision==0.18.1 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cu121
(1) 通过PyTorch官网获取安装命令

访问 PyTorch官网,选择:

  • 操作系统(Windows/Linux/macOS)

  • 包管理工具(pip/conda)

  • Python 版本

  • CUDA 版本(或选择 CPU 版本)

(2) 示例安装命令

① CPU版本(无GPU)

pip install torch torchvision torchaudio

② GPU版本(CUDA 11.3) 

pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113

③ Conda安装 

conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch

3. 验证安装 

import torch# 检查PyTorch版本
print(torch.__version__)  # 输出:1.12.1(示例)# 检查CUDA是否可用
print(torch.cuda.is_available())  # 输出:True(GPU可用)/ False(仅CPU)

三、PyTorch核心API详解

1. 张量(Tensor)操作

张量(Tensor)是 PyTorch、TensorFlow 等深度学习框架中的核心数据结构,可以理解为多维数组的扩展:

  • 标量(0维张量):单个数字,如 3.14

  • 向量(1维张量):一维数组,如 [1, 2, 3]

  • 矩阵(2维张量):二维表格,如 [[1, 2], [3, 4]]

  • 高阶张量(3维及以上):如 RGB 图像(宽度×高度×通道数)

类比

  • NumPy 的 ndarray → PyTorch 的 Tensor

  • 但张量支持 GPU加速 和 自动微分,专为深度学习优化。

(1) 创建张量

在深度学习和科学计算中,张量是一种多维数组数据结构,是构建神经网络的基本单元。我们可以通过以下几种方式创建张量:

  1. 从Python列表或NumPy数组创建:

    import torch# 从列表创建1维张量
    tensor1 = torch.tensor([1, 2, 3, 4])# 从嵌套列表创建2维张量
    tensor2 = torch.tensor([[1, 2], [3, 4]])# 从NumPy数组创建
    import numpy as np
    np_array = np.array([5, 6, 7])
    tensor3 = torch.from_numpy(np_array)
    
  2. 使用初始化方法创建特定形状的张量:

    # 创建全零张量
    zeros_tensor = torch.zeros(2, 3)  # 2行3列的零矩阵# 创建全一张量
    ones_tensor = torch.ones(3, 3)    # 3×3的单位矩阵# 创建随机值张量
    rand_tensor = torch.rand(4, 4)    # 4×4的随机矩阵,元素在[0,1)均匀分布# 创建正态分布张量
    normal_tensor = torch.randn(2, 2) # 2×2的标准正态分布矩阵
    
  3. 创建与现有张量形状相同的张量:

    existing_tensor = torch.tensor([[1, 2], [3, 4]])# 创建形状相同但填充不同值的张量
    same_shape_zeros = torch.zeros_like(existing_tensor)
    same_shape_ones = torch.ones_like(existing_tensor)
    same_shape_rand = torch.rand_like(existing_tensor, dtype=torch.float32)
    
  4. 创建特殊类型张量:

    # 创建单位矩阵
    eye_tensor = torch.eye(3)  # 3×3的单位矩阵# 创建等差数列张量
    arange_tensor = torch.arange(0, 10, 2)  # [0, 2, 4, 6, 8]# 创建线性间隔张量
    linspace_tensor = torch.linspace(0, 1, 5)  # [0.0, 0.25, 0.5, 0.75, 1.0]
    

在创建张量时,可以通过dtype参数指定数据类型(如torch.float32、torch.int64等),device参数指定计算设备(如'cpu'或'cuda'),requires_grad参数指定是否需要计算梯度(用于自动微分)。

import torch# 检查CUDA是否可用
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')# 创建浮点型张量(默认float32),位于GPU(如果可用),需要梯度
x = torch.tensor([1.0, 2.0, 3.0], dtype=torch.float32,  # 指定数据类型device=device,        # 指定计算设备requires_grad=True)   # 启用梯度计算# 创建整型张量(int64),位于CPU,不需要梯度
y = torch.tensor([4, 5, 6], dtype=torch.int64)# 简单运算(结果会继承x的属性)
z = x * 2 + y.to(device)  # 将y移到相同设备# 反向传播计算梯度
z.sum().backward()# 查看梯度
print(f"张量x的值: {x}")
print(f"张量x的梯度: {x.grad}")
print(f"张量z是否需要梯度: {z.requires_grad}")
(2) 张量运算 

张量的运算是对应位置相互运算,但是张量也可以进行矩阵运算,只是使用的api不同。 

a = torch.tensor([1, 2, 3])
b = torch.tensor([4, 5, 6])# 加法
c = a + b  # 或 torch.add(a, b)
print(c)  # 输出:tensor([5, 7, 9])# 矩阵乘法
mat_a = torch.randn(2, 3)
mat_b = torch.randn(3, 2)
mat_c = torch.matmul(mat_a, mat_b)  # 或使用 @ 运算符
print(mat_c.shape)  # 输出:torch.Size([2, 2])

2. Autograd(自动微分)

PyTorch 的 autograd 模块提供自动求导功能:

x = torch.tensor(2.0, requires_grad=True)  # 启用梯度跟踪
y = x ** 2 + 3 * x + 1  # 计算y = x² + 3x + 1
y.backward()  # 反向传播计算梯度
print(x.grad)  # 输出:7.0(dy/dx = 2x + 3,x=2时梯度为7)

3. 神经网络构建(torch.nn)

(1) 定义神经网络
import torch.nn as nnclass SimpleNN(nn.Module):def __init__(self):super(SimpleNN, self).__init__()self.fc1 = nn.Linear(10, 5)  # 全连接层(输入10维,输出5维)self.relu = nn.ReLU()        # 激活函数self.fc2 = nn.Linear(5, 1)   # 输出层(输出1维)def forward(self, x):x = self.fc1(x)x = self.relu(x)x = self.fc2(x)return xmodel = SimpleNN()
print(model)

(2) 损失函数与优化器 

criterion = nn.MSELoss()  # 均方误差损失
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)  # 随机梯度下降# 模拟训练数据
inputs = torch.randn(100, 10)  # 100个样本,每个10维
targets = torch.randn(100, 1)   # 100个标签# 训练循环
for epoch in range(100):optimizer.zero_grad()  # 清空梯度outputs = model(inputs)  # 前向传播loss = criterion(outputs, targets)  # 计算损失loss.backward()         # 反向传播optimizer.step()        # 更新权重

四、常见问题解决

1. 安装失败

  • CUDA版本不匹配:卸载旧版本,重新安装匹配的 PyTorch。

  • 网络问题:使用 -i https://pypi.tuna.tsinghua.edu.cn/simple 换源。

2. GPU不可用

  • 检查 torch.cuda.is_available()。(是否电脑有GPU)

  • 确认安装了 CUDA + cuDNN


五、总结

本文详细介绍了:

  1. PyTorch 的 安装方法(CPU/GPU版本)

  2. 张量操作 和 自动微分

  3. 神经网络构建 与 训练流程

  4. 常见问题解决方案

PyTorch 凭借其灵活性和高效性,已成为深度学习研究的主流工具。建议读者动手实践示例代码,逐步掌握其核心功能!

🚀 进阶学习:

  • PyTorch官方教程

  • 《Deep Learning with PyTorch》

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

相关文章:

  • Chatbox➕知识库➕Mcp = 机器学习私人语音助手
  • 分层Agent
  • turborepo 如何解决git管理包过大的问题
  • 二、Docker安装部署教程
  • 20250707-4-Kubernetes 集群部署、配置和验证-kubeconfig_笔记
  • 人工智能赋能极端气候事件管理:重构风险预警与应急响应体系
  • 汽车功能安全系统阶段开发【技术安全需求TSR】4
  • 多维度数据资产测绘技术在安全管控平台中的应用实践
  • RKAndroid11-系统设置新增开关选项
  • 1. http 有哪些版本,你是用的哪个版本,怎么查看
  • 构建分布式高防架构实现业务零中断
  • 2025最新如何解决VSCode远程连接开发机失败/解决方案大全
  • 提示工程(Prompt Engineering)研究进展
  • Spring Data JPA基本方法调用规律
  • web渗透之指纹识别1
  • Shader面试题100道之(1-20)
  • PX4无人机上的返航操作和参数解读
  • 华为OD机试 2025B卷 - 最长的指定瑕疵度的元音子串 (C++PythonJAVAJSC语言)
  • DCN2:大规模推荐系统中的碰撞权重与显式交叉层协同优化
  • C++ tcp客户端处理重连问题
  • 3S技术+ArcGIS/ENVI全流程实战:水文、气象、灾害、生态、环境及卫生等领域应用
  • 前端工程化速通——①ES6
  • OSPF路由过滤实验案例
  • severb
  • 大模型通用架构图
  • es性能优化
  • 国产ARM+FPGA工业开发平台——GM-3568JHF
  • LeetCode 151. 反转字符串中的单词
  • 软考(软件设计师)存储管理—存储空间管理,文件共享保护
  • 虚幻引擎Gameplay框架