📘 适合谁看?

  • 完全零基础的小白
  • 有 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()
GPUmodel.to(device)
保存加载torch.save()torch.load()