共计 1469 个字符,预计需要花费 4 分钟才能阅读完成。
AlexNet 模型简介
AlexNet 是 2012 年 ImageNet 竞赛冠军模型,由 Alex Krizhevsky 等人提出。这个模型在当时计算机视觉领域具有里程碑意义,主要因为它:

- 首次成功应用 ReLU 激活函数
- 使用 Dropout 减少过拟合
- 证明了深度卷积神经网络的强大能力
即使现在,AlexNet 仍然是理解 CNN 基础架构和进行迁移学习入门的理想选择。
预训练权重下载渠道
PyTorch 官方提供了 AlexNet 的预训练权重,可以通过以下方式获取:
- 直接通过 PyTorch 的模型库下载
- 从 Torch Hub 加载
- 手动下载权重文件
最推荐的方式是第一种,因为它最简单且能确保版本兼容性。
PyTorch 中加载预训练权重
下面是在 PyTorch 中加载 AlexNet 预训练权重的完整示例代码:
import torch
import torchvision.models as models
# 加载预训练模型
model = models.alexnet(pretrained=True)
# 将模型设置为评估模式
model.eval()
# 打印模型结构
print(model)
这段代码会自动下载预训练权重并加载。关键点:
pretrained=True参数告诉 PyTorch 下载预训练权重eval()将模型设置为评估模式,这对某些层 (如 Dropout) 的行为有影响
迁移学习应用案例
迁移学习的典型流程:
- 加载预训练模型
- 替换最后的全连接层
- 微调模型
示例代码:
import torch.nn as nn
# 加载预训练模型
model = models.alexnet(pretrained=True)
# 冻结前面的层
for param in model.parameters():
param.requires_grad = False
# 替换最后的分类器
model.classifier[6] = nn.Linear(4096, num_classes) # num_classes 是你的类别数
# 只训练最后的分类器
optimizer = torch.optim.SGD(model.classifier[6].parameters(), lr=0.001)
常见问题及解决方案
权重不匹配
如果遇到权重不匹配错误,可能是因为:
- 模型结构被修改过
- PyTorch 版本不兼容
解决方案:
- 检查模型结构是否与预训练权重匹配
- 考虑重新下载权重
输入尺寸问题
AlexNet 默认输入尺寸是 224×224。如果输入图像尺寸不对,需要:
from torchvision import transforms
preprocess = transforms.Compose([transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
性能优化建议
- 数据增强:使用 torchvision 的 transforms 进行数据增强
- 学习率调整:迁移学习时使用较小的学习率
- 批量归一化:保持 BN 层的运行统计
- 早停:监控验证集性能,防止过拟合
延伸阅读
- 阅读 AlexNet 原论文
- 尝试在其他数据集上应用迁移学习
- 学习更多现代 CNN 架构如 ResNet、EfficientNet
动手练习
- 下载 AlexNet 预训练权重并在 PyTorch 中加载
- 修改模型进行猫狗分类任务
- 比较微调不同层对性能的影响
希望这篇指南能帮助你顺利开始 AlexNet 的迁移学习之旅。记住实践是最好的学习方式,动手尝试各种变体会加深你对模型的理解。
正文完
