AlexNet

1.简介

AlexNet是由Alex Krizhevsky、Ilya Sutskever、Geoffrey E. Hinton设计提出,在ImageNet LSVRC-2010竞赛中用于将120万高分辨图片分成1000种不同的类型。测试集上取得了top-1的37.5%和top-5的17.0%错误率的成绩。该神经网络拥有6千万个参数和65万个神经元,包括5个卷积层,即池化层、3个带有1千步softmax的全连接层。为了加速训练,他们团队使用了非饱和神经元及高效的GPU来实现卷积计算,使用了dropout方法以减少全连接层过拟合现象。另外,在ILSVRC-2012竞赛中,他们使用了该模型的变种,获得了top-5错误率为15.3%的成绩,对比第二名则达到了26.2%。

2.数据集

ImageNet是一个包括超过2万2千个类目的1500万手工标注高分辨率图片的数据集。 这些图片来自于互联网,应用亚马逊Turk众包工具标注而成。起始于2010年,作为Pascal Visual Object Challenge的一部分,称为ImageNet Large-Scale Visual Recognition Challenge(ILSVRC)的年度竞赛。ILSVRC 使用ImageNet的子集,1000个类目下各有1000张图片。总之约有120万训练图片及5万验证图片,15万测试图片。

3.架构

总体结构包括8个学习层:5个卷积层和3个全连接层,如下图。最后的全连接层输出给一个1000步softmax,产生1000个类标签的分布。第二、四、五卷积核连接于映射在之前的运行于同一个GPU的核。第三卷积核连接投射于第二层的所有的核。全连接层的神经元连接于前一层的所有神经元。第一、二卷积层后面是Response-normalization层。两个 Response-normalization层之后,也就是第五层,是最大池化层。使用ReLU non-linearity 作为每个卷积层及全连接层的输出。第一卷积层拥有96个11×11×3核,以步长为4像素扫描224×224×3的输入图片。第二卷积层使用256个5 × 5 × 48的卷积核,对第一层的输出作为本层输入进行扫描滤过。第三、四、五卷积层顺序相连,没有任何干预性池化及标准化。第三卷积层有384个3 × 3 ×256 卷积核,连接于第二层的输出。第四卷积层则有384个3 × 3 × 192卷积核,第五卷积层则为 256个3 × 3 × 192的核。每个全连接层有 4096个神经元。
在这里插入图片描述

重要特性:

  • ReLU Nonlinearity
  • 多GPU训练
  • 局部反应标准化
  • 重叠池化
4.降低过拟合
4.1 Data Augmentation
  • 图片转换和水平投射
  • 改变RGB channels的强度
4.2 Dropout

将隐含层权值为0.5的神经元的输出设置为0,这部分神经元既不能向前行进也不能后向传播。测试时再讲所有神经元的输出乘以0.5,使结果更接近预测分布的几何均数。

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、付费专栏及课程。

余额充值