AlexNet

出处:

《ImageNet Classification with Deep Convolutional Neural Networks》

AlexNet在2012年的ImageNet比赛上夺冠

背景:

之前目标检测和识别任务对数据量要求比较大,AlexNet共有五层卷积和三层全连接,实验中其表示网络深度会对网络性能产生影响。

网络结构:

五层卷积和三层全连接,输入维度是224*224*3

  • Conv1: num=96,kernel_size=11,stride=4,pad=0,224*224*3 —> 55*55*96
  • LRN局部响应归一化(Local Response Normalized)
  • Maxpooling,kernel_size=3, stride=2, pad=0,55*55*96 —> 27*27*96
  • Conv2: num=256,kernel_size=5,stride=1,pad=2,27*27*96 —> 27*27*256
  • LRN局部响应归一化(Local Response Normalized)
  • Maxpooling,kernel_size=3, stride=2, pad=0,27*27*256 —> 13*13*256
  • Conv3: num=384,kernel_size=3,stride=1,pad=1,13*13*256 —> 13*13*384
  • Conv4: num=384,kernel_size=3,stride=1,pad=1,13*13*384 —> 13*13*384
  • Conv5: num=256,kernel_size=3,stride=1,pad=1,13*13*384 —> 13*13*256
  • Maxpooling,kernel_size=3, stride=2, pad=0,13*13*256 —> 6*6*256
  • FC1: 6*6*256 —> 4096
  • FC2: 4096 —> 4096
  • FC3: 4096 —> 1000 —> softmax

特点:

  • 成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题。虽然ReLU激活函数在很久之前就被提出了,但是直到AlexNet的出现才将其发扬光大。
  • 训练时使用Dropout随机忽略一部分神经元,以避免模型过拟合。Dropout虽有单独的论文论述,但是AlexNet将其实用化,通过实践证实了它的效果。在AlexNet中主要是最后几个全连接层使用了Dropout
  • CNN中使用重叠的最大池化。此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果。并且AlexNet中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性
  • 提出了LRN,对局部神经元的活动创建竞争机制,使得其中响应比较大值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力

结果 = 当前位置 / (前n/2和后n/2通道对应位置的平方和)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AlexNet是由Alex Krizhevsky等人在2012年提出的一个深度卷积神经网络(Convolutional Neural Network,CNN),它在ImageNet图像识别挑战赛中取得了显著突破,首次击败了传统的计算机视觉方法。这标志着深度学习在计算机视觉领域的重大进展。 在TensorFlow框架中,AlexNet可以被用来作为预训练模型,用于迁移学习任务,即在一个大型数据集(如ImageNet)上训练好的模型,在新的、具有相似任务的小规模数据集上进行微调。TensorFlow库提供了方便的接口,如`tf.keras.applications.AlexNet()`,可以直接加载预训练的AlexNet模型,并允许用户进行前向传播或对某些层进行修改和训练。 以下是使用AlexNet的基本步骤: 1. **导入模型**: ```python from tensorflow.keras.applications import AlexNet model = AlexNet(weights='imagenet') # 加载预训练权重 ``` 2. **冻结层**(如果不需要训练整个网络): ```python for layer in model.layers[:-10]: # 冻结除最后几层之外的层 layer.trainable = False ``` 3. **添加新层**(如果需要自定义输出): ```python new_output_layer = tf.keras.layers.Dense(units=...)(model.output) model = tf.keras.Model(inputs=model.input, outputs=new_output_layer) ``` 4. **编译和训练**(替换为新数据集): ```python model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) model.fit(x_train, y_train, epochs=..., validation_data=(x_val, y_val)) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值