AlexNet(Pytorch实现)

本文深入探讨了AlexNet模型的架构与原理,该模型是深度学习历史上的里程碑,显著提升了图像识别的准确性。文章详细介绍了AlexNet的各层结构,包括卷积层、激活函数、池化层及全连接层,并提供了使用PyTorch框架实现AlexNet的代码示例。
部署运行你感兴趣的模型镜像

github博客传送门
博客园传送门

论文在此: ImageNet Classification with Deep Convolutional Neural Networks

网络结构图:

AlexNet网络结构图
AlexNet

Pytorch代码实现:

import torch.nn as nn


class AlexNet(nn.Module):
    def __init__(self, num_classes=1000):
        super(AlexNet, self).__init__()
        self.features = nn.Sequential(
            nn.Conv2d(3, 64, kernel_size=11, stride=4, padding=2),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(kernel_size=3, stride=2),
            nn.Conv2d(64, 192, kernel_size=5, padding=2),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(kernel_size=3, stride=2),
            nn.Conv2d(192, 384, kernel_size=3, padding=1),
            nn.ReLU(inplace=True),
            nn.Conv2d(384, 256, kernel_size=3, padding=1),
            nn.ReLU(inplace=True),
            nn.Conv2d(256, 256, kernel_size=3, padding=1),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(kernel_size=3, stride=2),
        )
        self.classifier = nn.Sequential(
            nn.Linear(256 * 6 * 6, 4096),
            nn.ReLU(inplace=True),
            nn.Linear(4096, 4096),
            nn.ReLU(inplace=True),
            nn.Linear(4096, num_classes),
        )

    def forward(self, x):
        x = self.features(x)
        x = x.view(x.size(0), 256 * 6 * 6)
        x = self.classifier(x)
        return x


if __name__ == '__main__':
    # Example
    net = AlexNet()
    print(net)

您可能感兴趣的与本文相关的镜像

PyTorch 2.7

PyTorch 2.7

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

### 使用 PyTorch 实现 AlexNet 模型 为了成功构建并训练一个类似于AlexNet的卷积神经网络,可以遵循以下方法来编写Python脚本。该过程涉及定义模型架构、准备数据集以及配置训练循环。 #### 定义 AlexNet 类 在 `test.py` 文件中应当包含如下所示的类定义: ```python import torch.nn as nn class AlexNet(nn.Module): def __init__(self, num_classes=1000): super(AlexNet, self).__init__() self.features = nn.Sequential( nn.Conv2d(3, 64, kernel_size=11, stride=4, padding=2), nn.ReLU(inplace=True), nn.MaxPool2d(kernel_size=3, stride=2), nn.Conv2d(64, 192, kernel_size=5, padding=2), nn.ReLU(inplace=True), nn.MaxPool2d(kernel_size=3, stride=2), nn.Conv2d(192, 384, kernel_size=3, padding=1), nn.ReLU(inplace=True), nn.Conv2d(384, 256, kernel_size=3, padding=1), nn.ReLU(inplace=True), nn.Conv2d(256, 256, kernel_size=3, padding=1), nn.ReLU(inplace=True), nn.MaxPool2d(kernel_size=3, stride=2), ) self.classifier = nn.Sequential( nn.Dropout(), nn.Linear(256 * 6 * 6, 4096), nn.ReLU(inplace=True), nn.Dropout(), nn.Linear(4096, 4096), nn.ReLU(inplace=True), nn.Linear(4096, num_classes), ) def forward(self, x): x = self.features(x) x = x.view(x.size(0), 256 * 6 * 6) x = self.classifier(x) return x ``` 这段代码创建了一个名为 `AlexNet` 的新类继承自 `nn.Module` 并实现了原始论文描述的经典结构[^1]。 #### 创建模型实例 紧接着上述类定义之后,在同一文件内需增加一行用于初始化这个类的对象: ```python model = AlexNet() ``` 这一步骤至关重要,因为如果省略,则后续尝试加载已保存权重时可能会失败。 #### 加载预训练模型或继续训练 当一切就绪后,可以通过调用 `.load_state_dict()` 方法读取之前存储好的参数值到当前对象里;如果是首次启动则跳过此步直接进入训练阶段。 对于更详细的实现细节和其他辅助功能(比如优化器的选择、损失函数设定等),建议参考具体的应用场景和个人需求做适当调整。此外,可以从指定链接获取完整的源码和更多指导材料[^2]。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值