Pytorch实现AlexNet解决各类数据集(cifar10/imagenet)分类(这可能是最简单的源论文实现了)

本文详细介绍了PyTorch中如何实现AlexNet网络,包括网络结构、参数计算、避免过拟合的策略,如数据增强、ReLU激活、Dropout和局部响应归一化。此外,还讨论了AlexNet取得成功的关键因素和与其它网络结构的对比。
摘要由CSDN通过智能技术生成

PyTorch implements an AlexNet

完整代码地址
论文地址

如果有不懂的直接上https://github.com/Lornatang/AlexNet-PyTorch提问题。

免责说明:如果有引用代码,请注明出处。近段时间CSDN上很多恶意抄袭不注明出处的博主,谢谢。

Why AlexNet very good?

  1. 为什么Alexnet能在图2012 ImageNet LSVRC-2012 像识别(分类) competition取得这么好的成绩
  2. Alexnet的网络结构以及,参数数量的计算
  3. 为了避免过拟合使用的技巧:Data Augmentation(数据增强),正则化Relu以及dropout,局部响应归一化LRN。
  4. 对比了多个小的卷积核和大的卷积核的区别(前面BAT面试题)。
  5. Alexnet取得成功的原因,主要三条:
    大量数据,Deep Learning领域应该感谢李飞飞团队搞出来如此大的标注数据集合ImageNet;

GPU,这种高度并行的计算神器确实助了洪荒之力,没有神器在手,Alex估计不敢搞太复杂的模型;

算法的改进,包括网络变深、数据增强、ReLU、Dropout等。

  1. Alexnet网络结构以及参数数量的计算
    Alexnet网络的大体结构如下(论文以及一般的blog都是如下这个图,但是看起来很不直观):

image

下面给出两个更好理解的结构图,5个卷积层+3个全连接层:

image

image

来源:stackoverflow
https://www.learnopencv.com/understanding-alexnet/

各层的参数计算如下,下图为5个卷积层的参数:

image

全连接层如下:

image

可以看到:卷积层的参数明显少于全连接层的参数。其中,网络大概有62.3 million parameters,其中卷积层占比约6%,单占比95%的计算。

  1. 为了避免过拟合使用的技巧:Data Augmentation(数据增强),正则化Relu以及dropout
  2. 1 Data Augmentation(数据增强)
    数据增强简单的办法如,图片翻转Mirroring,随机裁剪Random Crops。

image

image

  1. 2 使用ReLU非线性激活函数
    使用ReLU非线性激活函数而不选择sigmoid或tanh函数,ReLU优势在于:

速度快 和sigmoid函数需要计算指数和倒数相比,relu函数其实就是一个max(0,x),计算代价小很多。

减轻梯度消失问题,从而可以训练更深的网络。

稀疏性 通过对大脑的研究发现,大脑在工作的时候只有大约5%的神经元是激活的,而采用sigmoid激活函数的人工神经网络,其激活率大约是50%。有论文声称人工神经网络在15%-30%的激活率时是比较理想的。因为relu函数在输入小于0时是完全不激活的,因此可以获得一个更低的激活率.

  1. 3 使用Dropout(只在最后几个全连接层做)

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值