PyTorch核心模块全解析
PyTorch 组成模块:张量与自动微分
PyTorch 的核心模块包括张量操作和自动微分系统。张量(Tensor)是 PyTorch 的基础数据结构,支持高效的数值计算。自动微分(Autograd)则负责动态计算梯度,为训练神经网络提供支持。
张量可以通过 torch.Tensor 创建,支持多种初始化方式:
import torch
# 从列表创建张量
x = torch.tensor([1, 2, 3])
# 创建全零张量
zeros = torch.zeros(2, 3)
# 随机初始化张量
rand_tensor = torch.rand(3, 3)
张量支持丰富的操作,包括数学运算、索引和形状变换:
# 矩阵乘法
mat1 = torch.rand(2, 3)
mat2 = torch.rand(3, 2)
result = torch.matmul(mat1, mat2)
# 改变形状
reshaped = result.view(1, 4)
自动微分机制
PyTorch 的 autograd 模块实现了自动微分。通过设置 requires_grad=True 跟踪张量的操作历史:
x = torch.tensor(2.0, requires_grad=True)
y = x ** 2 + 3 * x + 1
y.backward()
print(x.grad) # 输出 dy/dx 在 x=2 处的值
计算图是动态构建的,每次前向传播都会创建新的计算路径。这种设计允许模型结构在运行时改变,为动态网络提供支持。
神经网络模块
torch.nn 模块提供了构建神经网络的组件。典型的网络定义方式如下:
import torch.nn as nn
import torch.nn.functional as F
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(1, 6, 3)
self.fc1 = nn.Linear(16 * 6 * 6, 120)
def forward(self, x):
x = F.max_pool2d(F.relu(self.conv1(x)), 2)
x = x.view(-1, 16 * 6 * 6)
x = F.relu(self.fc1(x))
return x
模块化的设计使得网络组件可以灵活组合。nn.Module 的子类会自动管理参数,简化了复杂模型的实现过程。
优化器与损失函数
训练神经网络需要优化器和损失函数的配合。PyTorch 提供了多种实现:
# 定义损失函数
criterion = nn.CrossEntropyLoss()
# 定义优化器
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
# 训练循环示例
for epoch in range(epochs):
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
优化器负责更新参数,支持多种算法如 SGD、Adam 等。损失函数则量化模型预测与真实值的差距,指导参数更新方向。
数据加载与预处理
torch.utils.data 模块简化了数据加载过程。Dataset 和 DataLoader 是核心组件:
from torch.utils.data import Dataset, DataLoader
class CustomDataset(Dataset):
def __init__(self, data):
self.data = data
def __len__(self):
return len(self.data)
def __getitem__(self, idx):
return self.data[idx]
dataset = CustomDataset(data)
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)
这种设计实现了高效的数据批处理,支持多进程加载,显著提升训练效率。数据预处理可以通过 torchvision.transforms 完成。
BbS.okane092.info/PoSt/1121_422121.HtM
BbS.okane093.info/PoSt/1121_777755.HtM
BbS.okane094.info/PoSt/1121_538328.HtM
BbS.okane095.info/PoSt/1121_903705.HtM
BbS.okane096.info/PoSt/1121_466652.HtM
BbS.okane097.info/PoSt/1121_302445.HtM
BbS.okane098.info/PoSt/1121_967316.HtM
BbS.okane099.info/PoSt/1121_370406.HtM
BbS.okane100.info/PoSt/1121_643574.HtM
BbS.okane101.info/PoSt/1121_652140.HtM
BbS.okane092.info/PoSt/1121_818636.HtM
BbS.okane093.info/PoSt/1121_025412.HtM
BbS.okane094.info/PoSt/1121_524080.HtM
BbS.okane095.info/PoSt/1121_075341.HtM
BbS.okane096.info/PoSt/1121_895283.HtM
BbS.okane097.info/PoSt/1121_416620.HtM
BbS.okane098.info/PoSt/1121_309615.HtM
BbS.okane099.info/PoSt/1121_479067.HtM
BbS.okane100.info/PoSt/1121_489274.HtM
BbS.okane101.info/PoSt/1121_745548.HtM
BbS.okane092.info/PoSt/1121_306669.HtM
BbS.okane093.info/PoSt/1121_799411.HtM
BbS.okane094.info/PoSt/1121_823458.HtM
BbS.okane095.info/PoSt/1121_202260.HtM
BbS.okane096.info/PoSt/1121_605674.HtM
BbS.okane097.info/PoSt/1121_732823.HtM
BbS.okane098.info/PoSt/1121_273823.HtM
BbS.okane099.info/PoSt/1121_336489.HtM
BbS.okane100.info/PoSt/1121_272049.HtM
BbS.okane101.info/PoSt/1121_957821.HtM
BbS.okane092.info/PoSt/1121_852979.HtM
BbS.okane093.info/PoSt/1121_042367.HtM
BbS.okane094.info/PoSt/1121_056332.HtM
BbS.okane095.info/PoSt/1121_484665.HtM
BbS.okane096.info/PoSt/1121_893907.HtM
BbS.okane097.info/PoSt/1121_668880.HtM
BbS.okane098.info/PoSt/1121_635939.HtM
BbS.okane099.info/PoSt/1121_261746.HtM
BbS.okane100.info/PoSt/1121_754310.HtM
BbS.okane101.info/PoSt/1121_227704.HtM
BbS.okane092.info/PoSt/1121_766860.HtM
BbS.okane093.info/PoSt/1121_629740.HtM
BbS.okane094.info/PoSt/1121_975751.HtM
BbS.okane095.info/PoSt/1121_882202.HtM
BbS.okane096.info/PoSt/1121_621690.HtM
BbS.okane097.info/PoSt/1121_407087.HtM
BbS.okane098.info/PoSt/1121_817925.HtM
BbS.okane099.info/PoSt/1121_556014.HtM
BbS.okane100.info/PoSt/1121_121858.HtM
BbS.okane101.info/PoSt/1121_119999.HtM
BbS.okane092.info/PoSt/1121_659404.HtM
BbS.okane093.info/PoSt/1121_262413.HtM
BbS.okane094.info/PoSt/1121_908816.HtM
BbS.okane095.info/PoSt/1121_220132.HtM
BbS.okane096.info/PoSt/1121_594344.HtM
BbS.okane097.info/PoSt/1121_344768.HtM
BbS.okane098.info/PoSt/1121_080518.HtM
BbS.okane099.info/PoSt/1121_616577.HtM
BbS.okane100.info/PoSt/1121_066723.HtM
BbS.okane101.info/PoSt/1121_648052.HtM
BbS.okane092.info/PoSt/1121_262938.HtM
BbS.okane093.info/PoSt/1121_536990.HtM
BbS.okane094.info/PoSt/1121_170799.HtM
BbS.okane095.info/PoSt/1121_956587.HtM
BbS.okane096.info/PoSt/1121_575628.HtM
BbS.okane097.info/PoSt/1121_209231.HtM
BbS.okane098.info/PoSt/1121_810853.HtM
BbS.okane099.info/PoSt/1121_030442.HtM
BbS.okane100.info/PoSt/1121_418832.HtM
BbS.okane101.info/PoSt/1121_115392.HtM
BbS.okane092.info/PoSt/1121_422660.HtM
BbS.okane093.info/PoSt/1121_606629.HtM
BbS.okane094.info/PoSt/1121_923659.HtM
BbS.okane095.info/PoSt/1121_235681.HtM
BbS.okane096.info/PoSt/1121_940198.HtM
BbS.okane097.info/PoSt/1121_756982.HtM
BbS.okane098.info/PoSt/1121_157527.HtM
BbS.okane099.info/PoSt/1121_842524.HtM
BbS.okane100.info/PoSt/1121_872205.HtM
BbS.okane101.info/PoSt/1121_811793.HtM
