训练一个 Python 识别模型(比如图像识别、语音识别、文本分类等)通常遵循一套通用流程。下面我以最常见、最实用的「图像识别」为例,用通俗方式讲清楚步骤,并给你一个可直接运行的示例。
无论识别什么,流程都类似:
pip install torch torchvision matplotlib
import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
from torch.utils.data import DataLoader
# 1. 数据预处理
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.5,), (0.5,))
])
# 2. 加载数据(MNIST 手写数字)
train_set = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
train_loader = DataLoader(train_set, batch_size=64, shuffle=True)
# 3. 定义模型
class CNN(nn.Module):
def __init__(self):
super().__init__()
self.net = nn.Sequential(
nn.Conv2d(1, 16, 3),
nn.ReLU(),
nn.MaxPool2d(2),
nn.Conv2d(16, 32, 3),
nn.ReLU(),
nn.MaxPool2d(2),
nn.Flatten(),
nn.Linear(32*5*5, 10)
)
def forward(self, x):
return self.net(x)
model = CNN()
# 4. 损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
# 5. 训练
for epoch in range(3):
for x, y in train_loader:
optimizer.zero_grad()
out = model(x)
loss = criterion(out, y)
loss.backward()
optimizer.step()
print(f"Epoch {epoch+1}, Loss: {loss.item():.4f}")
# 6. 保存模型
torch.save(model.state_dict(), "model.pth")
model.load_state_dict(torch.load("model.pth"))
model.eval()
x, y = next(iter(train_loader))
pred = model(x[:1])
print(pred.argmax(dim=1))
不同任务对应不同库:
| 任务类型 | 推荐库 |
|---|---|
| 图像识别 | torchvision / OpenCV |
| 文本分类 | transformers / sklearn |
| 语音识别 | librosa / whisper |
| 表格数据 | scikit-learn |
✅ 先学:
✅ 再学:
✅ 实战:
如果你愿意,可以告诉我:
我可以直接给你定制方案和代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。