PyTorch 深度学习框架入门指南
1. 深度学习与 PyTorch 概述
深度学习是机器学习的一个重要分支,主要以神经网络为基础模块。通过灵活组合不同层数的网络结构,可以实现特定的模型功能,尤其在计算机视觉(CV)和自然语言处理(NLP)方向表现卓越。
PyTorch 作为主流深度学习框架,以其动态图机制和 Pythonic 风格著称。深度学习背景、PyTorch 核心功能(张量计算与自动求导)、生态系统组件,并提供了从环境搭建到模型训练的基础代码示例,帮助开发者快速上手 PyTorch 进行深度学习开发。

深度学习是机器学习的一个重要分支,主要以神经网络为基础模块。通过灵活组合不同层数的网络结构,可以实现特定的模型功能,尤其在计算机视觉(CV)和自然语言处理(NLP)方向表现卓越。
在深度学习的发展历史上,经历了多次高潮与低谷,目前正处于高速发展的蓬勃期。从理论研究到工业应用,成熟的工业级实现不可或缺。以 Python 语言为基础,经典机器学习模型常用 scikit-learn;而在深度学习领域,工具包的选择则更为多样,其中最具代表性和广泛使用的当属 TensorFlow 和 PyTorch。
TensorFlow 源于 Google,在工业应用中较为常见;PyTorch 发于 Facebook,在学术界更为流行。虽然二者界限日益模糊,但 PyTorch 凭借其动态图机制、与 NumPy 设计接近的语法风格以及更 Pythonic 的代码体验,赢得了众多开发者的青睐。
作为深度学习工具包,PyTorch 的定位主要体现在两个方面:
PyTorch 可视作 NumPy 的升级版。学习 PyTorch 时,如果具备 NumPy 基础,理解起来会非常简单。Tensor 不仅支持多维数组操作,还具备自动求导功能,这是构建神经网络的关键。
PyTorch 的动态计算图机制使得调试更加直观。在反向传播过程中,系统会自动记录计算过程并计算梯度,无需手动推导复杂的数学公式。
为了覆盖图像、语音及文本等应用方向,PyTorch 配套了多个工具包:
尽管工具包丰富,PyTorch 仍然是基础和核心,其他库均围绕其 Tensor 和 Autograd 机制构建。
在使用 PyTorch 之前,需要配置好运行环境。推荐使用 Conda 或 Pip 进行安装。
pip install torch torchvision torchaudio
conda install pytorch torchvision torchaudio cpu -c pytorch
注意:若需使用 GPU 加速,请根据 CUDA 版本选择对应的安装包命令。
import torch
# 创建全零张量
zeros = torch.zeros(2, 3)
# 创建随机张量
random_tensor = torch.rand(2, 3)
# 从 NumPy 数组转换
import numpy as np
np_array = np.array([[1, 2], [3, 4]])
tensor_from_np = torch.from_numpy(np_array)
a = torch.tensor([1.0, 2.0])
b = torch.tensor([3.0, 4.0])
# 加法
c = a + b
# 矩阵乘法
d = torch.matmul(a, b)
# 查看设备
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
a = a.to(device)
PyTorch 中定义模型通常继承自 nn.Module 类。
import torch.nn as nn
import torch.nn.functional as F
class SimpleNet(nn.Module):
def __init__(self):
super(SimpleNet, self).__init__()
# 定义全连接层
self.fc1 = nn.Linear(784, 128)
self.fc2 = nn.Linear(128, 10)
def forward(self, x):
# 展平输入
x = x.view(-1, 784)
# 第一层 + ReLU
x = F.relu(self.fc1(x))
# 第二层
x = self.fc2(x)
return x
model = SimpleNet()
print(model)
一个完整的训练循环包含数据加载、前向传播、损失计算、反向传播和优化器更新。
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset
# 假设已有数据 X_train, y_train
X_train = torch.randn(100, 784)
y_train = torch.randint(0, 10, (100,))
dataset = TensorDataset(X_train, y_train)
dataloader = DataLoader(dataset, batch_size=10, shuffle=True)
model = SimpleNet()
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
# 训练循环
for epoch in range(10):
for batch_X, batch_y in dataloader:
# 前向传播
outputs = model(batch_X)
loss = criterion(outputs, batch_y)
# 反向传播
optimizer.zero_grad()
loss.backward()
optimizer.step()
print(f"Epoch {epoch+1}, Loss: {loss.item():.4f}")
PyTorch 以其灵活的动态图和简洁的 API 成为深度学习开发的首选框架之一。掌握张量操作、自动求导机制以及模型构建流程,是深入使用 PyTorch 的基础。通过官方文档和持续实践,开发者可以高效地构建和部署各类深度学习模型。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online