AlexNet

背景介绍

AlexNet是由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton在2012年开发的一种卷积神经网络(CNN),它在ImageNet大规模视觉识别挑战赛(ILSVRC)中取得了显著的成绩,引发了深度学习在计算机视觉领域的革命。

网络架构

  • AlexNet由五个卷积层(Conv)和三个全连接层(Fully Connected, FC)组成。
  • 输入层

    • 输入图像大小为227x227x3(宽x高x通道)。
  • 卷积层(Convolutional Layers)

    • Conv1: 96个11x11的卷积核,步长4,ReLU激活函数,输出尺寸为55x55x96。
    • Max Pooling1: 3x3池化窗口,步长2,输出尺寸为27x27x96。
    • Conv2: 256个5x5的卷积核,步长1,ReLU激活函数,输出尺寸为27x27x256。
    • Max Pooling2: 3x3池化窗口,步长2,输出尺寸为13x13x256。
    • Conv3: 384个3x3的卷积核,步长1,ReLU激活函数,输出尺寸为13x13x384。
    • Conv4: 384个3x3的卷积核,步长1,ReLU激活函数,输出尺寸为13x13x384。
    • Conv5: 256个3x3的卷积核,步长1,ReLU激活函数,输出尺寸为13x13x256。
    • Max Pooling3: 3x3池化窗口,步长2,输出尺寸为6x6x256。
  • 全连接层(Fully Connected Layers)

    • FC1: 4096个神经元,ReLU激活函数,Dropout正则化。
    • FC2: 4096个神经元,ReLU激活函数,Dropout正则化。
    • FC3: 1000个神经元,对应1000个类别的分类任务,Softmax激活函数。

网络特点

  • 每个卷积层后通常伴随一个最大池化层(Max Pooling)来降低数据的维度和计算量。
  • 首次利用GPU加速
  • 使用了LRN局部相应归一化
  • 全连接层前两层使用Dropout随机失活神经元操作,减少过拟合
  • 数据增强技术(如平移、翻转、裁剪等)用于增加训练数据的多样性,减轻过拟合。

激活函数

使用ReLU(Rectified Linear Unit)作为激活函数,相比传统的Sigmoid和Tanh激活函数,ReLU能更有效地解决梯度消失问题,加速模型收敛。

ReLU 函数是深度学习中较为流行的一种激活函数,相比于 sigmoid 函数和 tanh 函数,它具有如下优点:

  • 当输入为正时,不存在梯度饱和问题。

  • 计算速度快得多。ReLU 函数中只存在线性关系,因此它的计算速度比 sigmoid 和 tanh 更快。

缺点:

  • 当输入为负时,ReLU 完全失效,在正向传播过程中,这不是问题。有些区域很敏感,有些则不敏感。但是在反向传播过程中,如果输入负数,则梯度将完全为零,sigmoid 函数和 tanh 函数也具有相同的问题;

  • 我们发现 ReLU 函数的输出为 0 或正数,这意味着 ReLU 函数不是以 0 为中心的函数。

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

余额充值