📘 适合谁看?
- 完全零基础的小白
- 有 NumPy 或 TensorFlow 背景想转入 PyTorch 的开发者
- 想快速上手深度学习的同学
✅ 一、导入 PyTorch
import torch
📌 二、张量(Tensor)基础
张量是 PyTorch 中的核心数据结构,相当于 NumPy 的数组,但支持 GPU 加速和自动求导。
创建张量
a = torch.tensor([1.0, 2.0, 3.0]) # 指定值
b = torch.zeros(2, 3) # 全零
c = torch.ones(3, 3) # 全一
d = torch.randn(2, 3) # 正态分布随机数
e = torch.eye(4) # 单位矩阵
张量操作示例
x = torch.tensor([[1, 2], [3, 4]])
print(x.shape) # 查看形状
print(x.T) # 转置
print(torch.sum(x)) # 求和
⚡ 三、自动求导(Autograd)
PyTorch 中的自动求导系统可以自动追踪张量的操作并进行反向传播。
x = torch.tensor(2.0, requires_grad=True)
y = x ** 3 + 2 * x
y.backward() # 自动求导
print(x.grad) # 输出:3x^2 + 2 = 14
🔨 四、使用神经网络模块(torch.nn
)
PyTorch 提供了一个模块化接口来构建神经网络。
import torch.nn as nn
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.linear = nn.Linear(10, 1) # 输入维度10,输出维度1
def forward(self, x):
return self.linear(x)
model = Net()
print(model)
🏋️ 五、损失函数与优化器
criterion = nn.MSELoss() # 均方误差损失
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
# 假数据
inputs = torch.randn(5, 10)
targets = torch.randn(5, 1)
# 训练一步
outputs = model(inputs)
loss = criterion(outputs, targets)
optimizer.zero_grad()
loss.backward()
optimizer.step()
💻 六、使用 GPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = model.to(device)
inputs = inputs.to(device)
💾 七、保存与加载模型
# 保存
torch.save(model.state_dict(), 'model.pth')
# 加载
model.load_state_dict(torch.load('model.pth'))
model.eval()
📚 小结
内容 | 示例 |
---|---|
张量操作 | torch.tensor() 、.shape 、.sum() |
自动求导 | requires_grad=True 、.backward() |
模块构建 | nn.Module 子类 |
损失函数 | nn.MSELoss() 等 |
优化器 | torch.optim.SGD() 、.step() |
GPU | model.to(device) |
保存加载 | torch.save() 、torch.load() |
发表回复