AlexNet

2012年,AlexNet赢得ImageNet比赛冠军。
AlexNet是8层神经网络,包含5个卷积层和3个全连接层。
结构如下:
这里写图片描述
层次大小计算公式: imgsizefiltersize+2paddingstride+1=newfeturesize
每一层结构:
第一层:conv - relu - pool - LRN
data:227*227*96
conv:output_channel=96,kernel=11,stride=4
data:55*55*96 ( 227114+1=55 )
relu
data:55*55*96
pool:kernel=3,stride=2
data:27*27*96 ( 5532+1=27 )
norm
data:27*27*96
第二层:conv - relu - pool - LRN
data:27*27*96
conv:output_channel=256,kernel=5,stride=1,pad=2,group=2
data:27*27*256 ( 275+221+1=27 )
relu
data:27*27*256
pool:kernel=3,stride=2
data:13*13*256 ( 2732+1=13 )
norm
data:13*13*256
第三层:conv - relu
data:13*13*256
conv:output_channel=384,kernel=3,stride=1,pad=1
data:13*13*384 ( 133+121+1=13 )
relu
data:13*13*384
第四层:conv - relu
data:13*13*384
conv:output_channel=384,kernel=3,stride=1,pad=1
data:13*13*384 ( 133+121+1=13 )
relu
data:13*13*384
第五层:conv - relu - pool
data:13*13*384
conv:output_channel=256,kernel=3,stride=1,pad=1
data:13*13*256 ( 133+121+1=13 )
relu
data:13*13*256
pool:kernel=3,stride=2
data:6*6*256( 1332+1=6 )
第六层:fc - relu - dropout
data:6*6*256
fc
data:4096
relu
data:4096
dropout
data:4096
第七层:fc - relu - dropout
data:4096
fc
data:4096
relu
data:4096
dropout
data:4096
第八层:fc - softmax
data:4096
fc
data:1000

使用gluon实现简易代码如下:

net = nn.Sequential()
with net.name_scope():
    net.add(
        # 第一层
        nn.Conv2D(channels=96, kernel_size=11,
                  strides=4, activation='relu'),
        nn.MaxPool2D(pool_size=3, strides=2),
        # 第二层
        nn.Conv2D(channels=256, kernel_size=5,
                  padding=2, activation='relu'),
        nn.MaxPool2D(pool_size=3, strides=2),
        # conv3
        nn.Conv2D(channels=384, kernel_size=3,
                  padding=1, activation='relu'),
        #conv4
        nn.Conv2D(channels=384, kernel_size=3,
                  padding=1, activation='relu'),
        conv5
        nn.Conv2D(channels=256, kernel_size=3,
                  padding=1, activation='relu'),
        nn.MaxPool2D(pool_size=3, strides=2),
        # R1
        nn.Flatten(),
        nn.Dense(4096, activation="relu"),
        nn.Dropout(.5),
        # R2
        nn.Dense(4096, activation="relu"),
        nn.Dropout(.5),
        # R3
        nn.Dense(1000)
    )
  • 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、付费专栏及课程。

余额充值