PyTorch是什么?
想象你有一根魔法棒,可以轻松让计算机学会「认猫猫、写诗歌、玩游戏」!
PyTorch就是这根魔法棒——它把复杂的数学公式变成简单的指令,让AI学习像搭积木一样简单!
核心概念 → 魔法学校的四门课
1. 张量(Tensor)→ 魔法石
作用:存储数字的容器,可以是数字、矩阵、3D方块…
举个栗子🌰:
python
复制
import torch
普通数字 = torch.tensor(3.14) # 单个魔法石
矩阵 = torch.tensor([[1, 2], [3, 4]]) # 2x2的魔法石阵列
随机魔法 = torch.rand(3, 3) # 3x3的随机魔法石(值在0~1之间)用途:存图片像素、存文字编码、存游戏分数…
2. 自动求导(Autograd)→ 自动纠错羽毛笔
作用:AI学错了?自动告诉你哪里错、怎么改!
举个栗子🌰:
python
复制
x = torch.tensor(2.0, requires_grad=True) # 标记要追踪的变量
y = x ** 2 + 3*x + 1 # 公式:y = x² +3x +1
y.backward() # 让羽毛笔自动计算导数
print(x.grad) # 输出导数:2x +3 → 2*2+3=7用途:训练AI时自动调整参数,超省心!
3. 神经网络(nn.Module)→ 魔法咒语书
作用:用预制的“咒语层”快速拼装AI大脑!
举个栗子🌰(5行代码造一个AI!):
python
复制
import torch.nn as nn
# 咒语书:定义一个能识别手写数字的AI
class 数字识别AI(nn.Module):
def __init__(self):
super().__init__()
self.layer = nn.Linear(784, 10) # 输入784像素 → 输出10个数字(0~9)
def forward(self, x):
return self.layer(x)
AI = 数字识别AI() # 召唤AI!
4. 优化器(Optimizer)→ 魔法药水
作用:让AI学习速度加快10倍的“聪明药”!
举个栗子🌰:
python
复制
optimizer = torch.optim.SGD(AI.parameters(), lr=0.01) # 用“梯度下降”药水
loss_func = nn.CrossEntropyLoss() # 定义错误计算器
# 训练循环(就像教AI认字):
for epoch in range(10):
optimizer.zero_grad() # 清空之前的错误
output = AI(图片数据) # AI猜答案
loss = loss_func(output, 真实答案) # 算错误值
loss.backward() # 羽毛笔自动找错误原因
optimizer.step() # 喝药水改进!
实战例子:5分钟让AI学会加法!
目标:训练一个AI,输入两个数字,输出它们的和(虽然用不到AI,但超适合理解流程!)
python
复制
import torch
import torch.nn as nn
import torch.optim as optim
# 1. 准备训练数据(100个样例)
X = torch.rand(100, 2) # 输入:100组两个随机数(0~1之间)
y = X[:, 0] + X[:, 1] # 正确答案:两个数相加
y = y.view(-1, 1) # 调整形状为100x1
# 2. 定义一个超简单的AI(就一层!)
class 加法AI(nn.Module):
def __init__(self):
super().__init__()
self.layer = nn.Linear(2, 1) # 输入2个数 → 输出1个数
def forward(self, x):
return self.layer(x)
AI = 加法AI()
# 3. 设置药水和错误计算器
optimizer = optim.SGD(AI.parameters(), lr=0.1)
loss_func = nn.MSELoss() # 用均方误差算错误
# 4. 开始训练!
for epoch in range(100):
optimizer.zero_grad()
prediction = AI(X) # AI的猜测
loss = loss_func(prediction, y) # 和正确答案比
loss.backward()
optimizer.step()
if epoch % 10 == 0:
print(f"第{epoch}次训练,错误值:{loss.item():.4f}")
# 5. 测试AI!
test_input = torch.tensor([[0.3, 0.5]]) # 输入0.3和0.5
print(f"AI的答案:{AI(test_input).item():.2f} → 正确答案:0.80")
运行结果:
复制
第0次训练,错误值:0.2853
第10次训练,错误值:0.0121
...
第90次训练,错误值:0.0001
AI的答案:0.80 → 正确答案:0.80 ✅
PyTorch学习路线图
玩转张量:学会用
torch.rand(),torch.sum(),.shape查看形状手写AI:用
nn.Linear、nn.ReLU搭2层网络实战项目:
用MNIST数据集教AI认数字(官方教程有现成代码)
用预训练模型让AI给图片加滤镜(超酷!)
进阶:学卷积神经网络(CNN)玩图像分类!
避坑指南
安装:直接用Google Colab(搜“Google Colab”进入 → 新建笔记本 → 输入代码秒运行)
报错:90%的错误是因为张量形状不对,用
.shape检查维度!社群:遇到问题去PyTorch论坛或Stack Overflow搜,全世界魔法师都在帮你!
终极口诀:import torch → 造数据 → 搭模型 → 训练循环 → 测试!
你已经是会用PyTorch的小魔法师啦! 🧙♂️
(下次试试训练AI帮你写作业?虽然数学老师可能会怀疑人生🤣)

