AlexNet网络详解

AlexNet网络详解

网络结构分析

图一:AlexNet 网络结构图

​ 图一:AlexNet 网络结构图

卷积网络中卷积计算公式

N = ( W − F + 2 P ) / S + 1 N = (W - F + 2P)/ S +1 N=WF+2P/S+1

其中:

1、输入图像大小为 W X W

2、Filter大小为 F X F

3、步长stride为 S

4、padding的像素数为 P

AlexNet网络结构解析

Conv1

卷积核个数(kernels):96

卷积核大小(kernel_size):11

padding大小:[1, 2](即特征矩阵的左边加上一列0,右边加上两列0;上面加上一列0,下面加上两列0)

步长(stride):4

输入(input_size):[224, 224, 3]

输出(output_size):[55, 55, 96]

Maxpooling1

卷积核大小(kernel_size):3

padding大小:0

步长(stride):2

输入(input_size):[55, 55, 96]

输出(output_size):[27, 27, 96]

进行LRN归一化操作

Conv2

卷积核个数(kernels):256

卷积核大小(kernel_size):5

padding大小:[2, 2]

步长(stride):1

输入(input_size):[27, 27, 96]

输出(output_size):[27, 27, 256]

Maxpooling2

卷积核大小(kernel_size):3

padding大小:0

步长(stride):2

输入(input_size):[27, 27, 256]

输出(output_size):[13, 13, 256]

进行LRN归一化操作

Conv3

卷积核个数(kernels):384

卷积核大小(kernel_size):3

padding大小:[1, 1]

步长(stride):1

输入(input_size):[13, 13, 256]

输出(output_size):[13, 13, 384]

Conv4

卷积核个数(kernels):384

卷积核大小(kernel_size):3

padding大小:[1, 1]

步长(stride):1

输入(input_size):[13, 13, 384]

输出(output_size):[13, 13, 384]

Conv5

卷积核个数(kernels):256

卷积核大小(kernel_size):3

padding大小:[1, 1]

步长(stride):1

输入(input_size):[13, 13, 384]

输出(output_size):[13, 13, 256]

Maxpooling3

卷积核大小(kernel_size):3

padding大小:0

步长(stride):2

输入(input_size):[13, 13, 256]

输出(output_size):[6, 6, 256]

FC1

输入(input_size):[6, 6, 256]

输出(output_size):[1, 1, 4096]

FC2

输入(input_size):[1, 1, 4096]

输出(output_size):[1, 1, 4096]

FC3(最后输出层SoftMax,可根据实际训练情况进行更改)

输入(input_size):[1, 1, 4096]

输出(output_size):[1, 1, 1000]

AlexNet 网络优点

1、首次利用GPU进行网络加速训练

2、使用Relu激活函数,而非传统的Sigmod激活函数以及Tanh激活函数

3、使用了LRN局部响应归一化

4、在全链接层的前两层使用Dropout随机失活神经元操作,以减少过拟合

LRN局部响应归一化

LRN计算公式

LRN计算公式如下:
在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DK4XI3yC-1628497027476)(/home/jiu/图片/2021-08-09 15-55-57 的屏幕截图.png)]

a:卷积层后的输出结果,该结果结构为一个四维数组[batch, height, width, channel ]

batch:批次数(每一批为一张图片)

height:图片高度

width:图片宽度

channel:通道数(处理后的图片深度)

ai(x, y):输出结构中的一个位置的[a, b, c, d],第a张图的第d个通道下的高度为b宽度为c的点。

N:通道数(channel)

a, n/2, k, α, β:input, depth_radius, bias, alpha, beta,(n/2,k,α,β是自定义的,特别注意一下∑叠加的方向是沿着通道方向的,即每个点值的平方和是沿着a中的第3维channel方向的,也就是一个点同方向的前面n/2个通道(最小为第0个通道)和后n/2个通道(最大为第d-1个通道)的点的平方和(共n+1个点),叠加的方向也是在通道方向。

即可理解为:

​ i 表示第 i 个核在位置(x, y)运用激活函数ReLU后的输出,n是同一位置上临近的kernal map的数目,N是kernal的总数。参数K,n,alpha,belta都是超参数,一般设置k=2, n=5, aloha=1*e-4, beta=0.75。

LRN动机

​ 神经生物学有一个概念叫"侧抑制",指的是被激活的神经元抑制相邻的神经元,因而归一化的目的是“抑制”;局部响应归一化就是借鉴侧抑制的思想实现局部抑制

LRN好处

1、增加范化能力

2、做平滑处理,提高识别率(1%-2%)

参考文章

https://www.cnblogs.com/xiaoboge/p/10463058.html

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值