训练图像分类器

PyTorch 深度学习进阶

Michal Oleszak

Machine Learning Engineer

数据增强回顾

一只猫的图片。

PyTorch 深度学习进阶

数据增强回顾

水平翻转并旋转后的猫。

PyTorch 深度学习进阶

不应增强的情况

黄色柠檬与绿色酸橙外形相同,仅颜色不同。

PyTorch 深度学习进阶

不应增强的情况

黄色柠檬与绿色酸橙外形相同,仅颜色不同。

PyTorch 深度学习进阶

不应增强的情况

字母"W"垂直翻转后看起来像"M"。

  • 增强可能影响标签
  • 是否造成混淆取决于任务
  • 选择增强时始终考虑数据与任务
PyTorch 深度学习进阶

云分类的数据增强

一组云的样本图片。

  • 旋转(随机): 让模型看到不同角度的云
  • 水平翻转:模拟不同视角的天空
  • 自动对比度:模拟不同光照
train_transforms = transforms.Compose([
    transforms.RandomHorizontalFlip(),
    transforms.RandomRotation(45),
    transforms.RandomAutocontrast(),
    transforms.ToTensor(),
    transforms.Resize((128, 128))
])
PyTorch 深度学习进阶

交叉熵损失

  • 二分类:二元交叉熵(BCE)损失
  • 多分类:交叉熵损失
  • criterion = nn.CrossEntropyLoss()
PyTorch 深度学习进阶

图像分类器训练循环

net = Net(num_classes=7)

criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(net.parameters(), lr=0.001)


for epoch in range(10): for images, labels in dataloader_train: optimizer.zero_grad() outputs = net(images) loss = criterion(outputs, labels) loss.backward() optimizer.step()
PyTorch 深度学习进阶

让我们来练习!

PyTorch 深度学习进阶

Preparing Video For Download...