• AlexNet


    《ImageNet Classification with Deep Convolutional Neural Networks》
    2012年ISLVRC2012竞赛的冠军网络,由Hinton和他的学生Alex Krizhevsky设计。

    网络亮点:

    1. 首次利用GPU进行网络加速训练
    2. 使用了ReLU激活函数,而不是传统的Sigmoid激活函数以及Tanh激活函数。
    3. 使用了LRN局部响应归一化
    4. 在全连接层的前两层中使用了Dropout随机失活神经元操作,以减少过拟合。

    网络结构

    image
    这幅图分为上下两个部分的网络,论文中提到这两部分网络是分别对应两个GPU,只有到了特定的网络层后才需要两块GPU进行交互,这种设置完全是利用两块GPU来提高运算的效率,其实在网络结构上差异不是很大。
    image

    代码实现

    class AlexNet(nn.Module):
        def __init__(self, init_weights=False):
            super(AlexNet, self).__init__()
            self.conv1 = nn.Sequential(
                nn.Conv2d(3, 96, kernel_size=11, stride=4, padding=2),
                nn.ReLU(inplace=True),
                nn.MaxPool2d(3, 2),
            )
            self.conv2 = nn.Sequential(
                nn.Conv2d(96, 256, kernel_size=5, padding=2),
                nn.ReLU(inplace=True),
                nn.MaxPool2d(3, 2),
            )
            self.conv3 = nn.Sequential(
                nn.Conv2d(256, 384, kernel_size=3, padding=1),
                nn.ReLU(inplace=True),
            )
            self.conv4 = nn.Sequential(
                nn.Conv2d(384, 384, kernel_size=3, padding=1),
                nn.ReLU(inplace=True),
            )
            self.conv5 = nn.Sequential(
                nn.Conv2d(384, 256, kernel_size=3, padding=1),
                nn.ReLU(inplace=True),
                nn.MaxPool2d(kernel_size=3, stride=2),
            )
    
            self.classifier = nn.Sequential(
                nn.Dropout(p=0.5),
                nn.Linear(128 * 6 * 6, 2048),
                nn.ReLU(inplace=True),
                nn.Dropout(p=0.5),
                nn.Linear(2048, 2048),
                nn.ReLU(inplace=True),
                nn.Linear(2048, 1000),
            )
    
        def forward(self, x):
            x = self.conv1(x)
            x = self.conv2(x)
            x = self.conv3(x)
            x = self.conv4(x)
            x = self.conv5(x)
    
            x = torch.flatten(x, start_dim=1)
            x = self.classifier(x)
            return x
    
  • 相关阅读:
    第一行代码--笔记(1)
    iOS UITableView深入
    iOS 数据库主键重复,依然可以插入
    UILabel文本高度自适应 不同系统出现问题
    UIlabel上的文字 距上 居左 对齐
    UILabel 自定义字体
    【整理】--VC 编译整理
    【整理】--【内核模块】简单例子,编译加载
    【原创】-- uboot,kennel,fs,rootfs 编译制作
    【原创】-- nfs安装配置及使用,挂载根文件系统
  • 原文地址:https://www.cnblogs.com/mengting-123/p/14838910.html
Copyright © 2020-2023  润新知