AlexNet网络的搭建

简介: 在全连接层的前两层使用了Dropout随机失活神经元的操作,减少过拟合

AlexNet网络解析


亮点


1.首次引入GPU进行网络加速训练,其中,下图是使用了两块GPU进行训练


f5cf0320892e6c32b2c43994b1ad6364.png


2.使用了ReLU激活函数


3.在全连接层的前两层使用了Dropout随机失活神经元的操作,减少过拟合


网络结构


5ff6bccac593f53f51b1be1020b3d635.png


经卷积后矩阵尺寸大小计算公式为:


N = (W-F+P1+P2)/S+1


W-输入图片的大小W*W;F-卷积核大小FxF;


P1:图片上方padding的个数;P2:图片下方padding的个数;S:步长


Conv1


输入:(3,224,224)


W=224,F=11,P=[1,2],S=4,N=(224-11+1+2)/4+1=55


输出:(96,55,55)


Maxpool1


输入:(96,55,55)


W=55,F=3,P=[0,0],S=2,N=(55-3)/2+1=27


输出:(96,27,27)


Conv2


输入:(96,27,27)


W=27,F=5,P=[2,2],S=1,N=(27-5+4)/1+1=27


输出:(256,27,27)


Maxpool2


输入:(256,27,27)


W=27,F=3,P=[0,0],S=2,N=(27-3)/2+1=13


输出:(256,13,13)


Conv3


输入:(256,13,13)


W=13,F=3,P=[1,1],S=1,N=(13-3+1+1)/1+1=13


输出:(384,13,13)


Conv4


输入:(384,13,13)


W=13,F=3,P=[1,1],S=1,N=(13-3+1+1)/1+1=13


输出:(384,13,13)


Conv5


输入:(384,13,13)


W=13,F=3,P=[1,1],S=1,N=(13-3+1+1)/1+1=13


输出:(256,13,13)


代码复现


class AlexNet(nn.Module):
    def __init__(self,num_classes=1000,init_weights=False):
        super(AlexNet, self).__init__()
        # nn.Sequential         简化步骤
        self.features = nn.Sequential(
            # 特征提取层
            # Input[3,224,224]    output[48,55,55]
            nn.Conv2d(3,48,kernel_size=11,stride=4,padding=2),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(kernel_size=3,stride=2),
            nn.Conv2d(48,128,kernel_size=5,padding=2),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(kernel_size=3,stride=2),
            nn.Conv2d(128,192,kernel_size=3,padding=1),
            nn.ReLU(inplace=True),
            nn.Conv2d(192, 192, kernel_size=3, padding=1),
            nn.ReLU(inplace=True),
            nn.Conv2d(192, 128, 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),  # p:神经元随机失活的比例
            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,num_classes)  # num_classes:分类的类别数
        )
        if init_weights:
            self._initialize_weights()
    def forward(self,x):
        x = self.features(x)
        x = torch.flatten(x,start_dim=1)
        x = self.classifier(x)
        return x
    # 初始化权重
    def _initialize_weights(self):
        # 遍历整个modules
        for m in self.modules():
            # 发现有nn.Conv2d这个结构
            if isinstance(m,nn.Conv2d):
                # 凯明初始化权重
                nn.init.kaiming_normal_(m.weight,mode='fan_out', nonlinearity='relu')
                if m.bias is not None:
                    nn.init.constant_(m.bias,0)
            # 发现有nn.Linear,则使用正态分布初始化函数
            elif isinstance(m,nn.Linear):
                nn.init.normal_(m.weight,0,0.01)
                nn.init.constant_(m.bias,0)


相关文章
|
7月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch实战演练】AlexNet网络模型构建并使用Cifar10数据集进行批量训练(附代码)
【PyTorch实战演练】AlexNet网络模型构建并使用Cifar10数据集进行批量训练(附代码)
512 0
|
机器学习/深度学习 数据挖掘 计算机视觉
经典神经网络论文超详细解读(一)——AlexNet学习笔记(翻译+精读)
经典神经网络论文超详细解读(一)——AlexNet学习笔记(翻译+精读)
1306 2
经典神经网络论文超详细解读(一)——AlexNet学习笔记(翻译+精读)
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】26.卷积神经网络之AlexNet模型介绍及其Pytorch实现【含完整代码】
【从零开始学习深度学习】26.卷积神经网络之AlexNet模型介绍及其Pytorch实现【含完整代码】
|
7月前
|
机器学习/深度学习 人工智能 编解码
Backbone往事 | AlexNet~EfficientNet,10多个网络演变铺满了炼丹师们的青葱岁月
Backbone往事 | AlexNet~EfficientNet,10多个网络演变铺满了炼丹师们的青葱岁月
199 0
|
7月前
|
机器学习/深度学习 数据采集 算法
基于AlexNet深度学习网络的智能垃圾分类系统matlab仿真
基于AlexNet深度学习网络的智能垃圾分类系统matlab仿真
|
机器学习/深度学习 数据挖掘 PyTorch
图像分类经典神经网络大总结(AlexNet、VGG 、GoogLeNet 、ResNet、 DenseNet、SENet、ResNeXt )
图像分类经典神经网络大总结(AlexNet、VGG 、GoogLeNet 、ResNet、 DenseNet、SENet、ResNeXt )
6917 1
图像分类经典神经网络大总结(AlexNet、VGG 、GoogLeNet 、ResNet、 DenseNet、SENet、ResNeXt )
|
机器学习/深度学习 算法 数据可视化
基于Alexnet深度学习网络的人员口罩识别算法matlab仿真
基于Alexnet深度学习网络的人员口罩识别算法matlab仿真
|
机器学习/深度学习 数据采集 算法
基于Alexnet深度学习网络的ECG信号是否异常识别算法matlab仿真
基于Alexnet深度学习网络的ECG信号是否异常识别算法matlab仿真
|
机器学习/深度学习 数据采集 算法
基于Alexnet深度学习网络的人脸识别算法matlab仿真
基于Alexnet深度学习网络的人脸识别算法matlab仿真
|
机器学习/深度学习 计算机视觉 异构计算
AlexNet网络模型讲解搭建以及训练
AlexNet网络模型讲解搭建以及训练