深度学习(3)- PyTorch 简介与安装
1. PyTorch 简介
PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理。
许多深度学习软件都是基于 PyTorch 构建的,包括特斯拉自动驾驶、Uber 的 Pyro、Hugging Face 的 Transformers、 PyTorch Lightning 和 Catalyst。
PyTorch 主要有两大特征:
- 类似于 NumPy 的张量计算,能在 GPU 或 MPS 等硬件加速器上加速。
- 基于带自动微分系统的深度神经网络。
PyTorch 包括 torch.autograd、torch.nn、torch.optim 等子模块。
PyTorch 包含多种损失函数,包括 MSE(均方误差 = L2 范数)、交叉熵损失和负熵似然损失(对分类器有用)等。
2. PyTorch 特性
-
动态计算图: PyTorch 的计算图是动态的,这意味着它们在运行时构建,并且可以随时改变。这为实验和调试提供了极大的灵活性,因为开发者可以逐行执行代码,查看中间结果。
-
自动微分: PyTorch 的自动微分系统允许开发者轻松地计算梯度,这对于训练深度学习模型至关重要。它通过反向传播算法自动计算出损失函数对模型参数的梯度。
-
张量计算: PyTorch 提供了类似于 NumPy 的张量操作,这些操作可以在 CPU 和 GPU 上执行,从而加速计算过程。张量是 PyTorch 中的基本数据结构,用于存储和操作数据。
-
丰富的 API: PyTorch 提供了大量的预定义层、损失函数和优化算法,这些都是构建深度学习模型的常用组件。
-
多语言支持: PyTorch 虽然以 Python 为主要接口,但也提供了 C++ 接口,允许更底层的集成和控制。
2.1 动态计算图
PyTorch 最显著的特点之一是其动态计算图的机制。
与 TensorFlow 的静态计算图(graph)不同,PyTorch 在执行时构建计算图,这意味着在每次计算时,图都会根据输入数据的形状自动变化。
动态计算图的优点:
- 更加灵活,特别适用于需要条件判断或递归的场景。
- 方便调试和修改,能够直接查看中间结果。
- 更接近 Python 编程的风格,易于上手。
2.2 张量与自动求导
PyTorch 中的核心数据结构是 张量,它是一个多维矩阵,可以在 CPU 或 GPU 上高效地进行计算。张量的操作支持自动求导机制,使得在反向传播过程中自动计算梯度,这对于深度学习中的梯度下降优化算法至关重要。
张量:
- 支持在 CPU 和 GPU 之间进行切换。
- 提供了类似 NumPy 的接口,支持元素级运算。
- 支持自动求导,可以方便地进行梯度计算。
自动求导:
- PyTorch 内置的自动求导引擎,能够自动追踪所有张量的操作,并在反向传播时计算梯度。
- 通过 requires_grad属性,可以指定张量需要计算梯度。
- 支持高效的反向传播,适用于神经网络的训练。
2.3 模型定义与训练
PyTorch 提供了 torch.nn 模块,允许用户通过继承 nn.Module 类来定义神经网络模型。使用 forward 函数指定前向传播,自动反向传播(通过 autograd)和梯度计算也由 PyTorch 内部处理。
神经网络模块(torch.nn):
- 提供了常用的层(如线性层、卷积层、池化层等)。
- 支持定义复杂的神经网络架构(包括多输入、多输出的网络)。
- 兼容与优化器(如 torch.optim)一起使用。
2.4 GPU 加速
PyTorch 完全支持在 GPU 上运行,以加速深度学习模型的训练。通过简单的 .to(device) 方法,用户可以将模型和张量转移到 GPU 上进行计算。PyTorch 支持多 GPU 训练,能够利用 NVIDIA CUDA 技术显著提高计算效率。
GPU 支持:
- 自动选择 GPU 或 CPU。
- 支持通过 CUDA 加速运算。
- 支持多 GPU 并行计算(DataParallel 或 torch.distributed)。
3. 与其他框架对比
PyTorch 由于其灵活性、易用性和社区支持,已经成为很多深度学习研究者和开发者的首选框架。
3.1 TensorFlow vs PyTorch

3.2 PyTorch vs NumPy

4. PyTorch安装
4.1 支持的操作系统
Windows:Windows 10 或更高版本(64位)
macOS:macOS 10.15 (Catalina) 或更高版本
Linux:主流发行版(Ubuntu 18.04+、CentOS 7+、RHEL 7+等)
4.2 Python 版本要求
推荐版本:Python 3.8 - 3.11
最低要求:Python 3.7
注意:Python 3.12+ 支持可能有限,建议使用稳定版本
4.3 硬件要求
CPU:支持 SSE4.2 指令集的 x86_64 处理器
内存:至少 4GB RAM(推荐 8GB+)
存储:至少 3GB 可用空间
GPU(可选):NVIDIA GPU with CUDA Compute Capability 3.5+

4.4 安装前的准备工作
Windows:
# 检查 Windows 版本
winver
# 检查 Python 版本
python --version
# 检查是否有 NVIDIA GPU
nvidia-smi
macOS
# 检查 macOS 版本
sw_vers
# 检查 Python 版本
python3 --version
# 检查是否有兼容的 GPU(Apple Silicon)
Linux
# 检查发行版信息
cat /etc/os-release
# 检查 Python 版本
python3 --version
# 检查 NVIDIA GPU
nvidia-smi
# 检查 CUDA 版本(如果已安装)
nvcc --version
4.5 Python 环境管理
使用 Anaconda/Miniconda:
# 下载并安装 Miniconda
# Windows: https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe
# macOS: https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
# Linux: https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 创建专用环境
conda create -n pytorch_env python=3.10
conda activate pytorch_env
使用 venv(Python 自带)
# 创建虚拟环境
python -m venv pytorch_env
# 激活环境
# Windows
pytorch_env\Scripts\activate
# macOS/Linux
source pytorch_env/bin/activate
4.6 安装 PyTorch
PyTorch 官方提供了几种安装方法,可以通过 pip 或 conda 进行安装。
CPU 版本安装
使用 pip 安装 pytorch:
# 最新稳定版本
pip install torch torchvision torchaudio
# 指定版本
pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0
# 仅 CPU 版本(更小的安装包)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
使用 conda 安装:
如果你使用 Anaconda 或 Miniconda 管理 Python 环境,使用 conda 安装 PyTorch 可能会更加简单和高效。
# 从 conda-forge 安装
conda install pytorch torchvision torchaudio cpuonly -c pytorch
# 或从 conda-forge 渠道
conda install pytorch torchvision torchaudio -c conda-forge
通过 PyTorch 官网安装
访问 PyTorch 的官方网站 https://pytorch.org/get-started/locally/,网站提供了一个方便的工具,可以根据你的系统配置(操作系统、包管理器、Python版本以及CUDA版本)推荐安装命令。

从源代码安装
如果你需要从源代码安装PyTorch,或者想要尝试最新的开发版本,你可以使用以下命令:
git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
python setup.py install
这将从 GitHub 克隆 PyTorch 的源代码,并使用 setup.py 进行安装。
GPU 版本安装(CUDA)
安装 CUDA(如果需要):
# Ubuntu/Debian
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda-repo-ubuntu2004-12-1-local_12.1.0-530.30.02-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-12-1-local_12.1.0-530.30.02-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2004-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda
# CentOS/RHEL
sudo yum install -y https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-repo-rhel8-12.1.0-1.x86_64.rpm
sudo yum clean all
sudo yum -y install cuda
安装 PyTorch GPU 版本:
# CUDA 12.1 版本
pip install torch torchvision torchaudio
# CUDA 11.8 版本
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# 使用 conda
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
4.7 验证安装
为了确保 PyTorch 已正确安装,我们可以通过执行以下 PyTorch 代码来验证是否安装成功:
import torch
# 当前安装的 PyTorch 库的版本
print(torch.__version__)
# 检查 CUDA 是否可用,即你的系统有 NVIDIA 的 GPU
print(torch.cuda.is_available())
如果 torch.cuda.is_available() 输出 True,则说明 PyTorch 成功识别到你的 GPU。
一个简单的实例,构建一个随机初始化的张量:
import torch
x = torch.rand(5, 3)
print(x)
如果安装成功,输出结果类似如下:
tensor([[0.3380, 0.3845, 0.3217],
[0.8337, 0.9050, 0.2650],
[0.2979, 0.7141, 0.9069],
[0.1449, 0.1132, 0.1375],
[0.4675, 0.3947, 0.1426]])
更多推荐
所有评论(0)