经典卷积神经网络之AlexNet

        AlexNet相较于LeNet其网络层次更深并且是在两块GPU上进行训练,这样做的目的是为了提高运算的效率。但是本质上是和LeNet没什么区别,都是卷积层、池化层、全连接层的顺序堆叠。
网络架构:
在这里插入图片描述
        从上图中,我们可以看到整个AlexNet的网络架构,以及它是如何在两块GPU上进行训练的,当到达一定的层次之后,两块GPU会进行交互,但是可以看到两个GPU上的模型基本上是一样的。下面,将在Tensorflow的环境下,使用单个GPU实现AlexNet的网络结构。

import tensorflow as tf
from tensorflow.keras import layers
# 输入层
input = layers.Input((224, 224, 3))
# 卷积层1
conv1 = layers.Conv2D(96, 11, 4, padding="valid")(input)
norm1 = layers.BatchNormalization()(conv1)
pool1 = layers.MaxPool2D(3, 2, padding="valid")(norm1)
# 卷积层2
conv2 = layers.Conv2D(256, 5, 1, padding="valid")(pool1)
norm2 = layers.BatchNormalization()(conv2)
pool2 = layers.MaxPool2D(3, 2, padding="valid")(norm2)
# 卷积层3
conv3 = layers.Conv2D(384, 3, 1, padding="valid")(pool2)
# 卷积层4
conv4 = layers.Conv2D(384, 3, 1, padding="valid")(conv3)
# 卷积层5
conv5 = layers.Conv2D(256, 3, 1, padding="valid")(conv4)
pool5 = layers.MaxPool2D(3, 2, padding="valid")(conv5)
# 展平
flatten = layers.Flatten()(pool5)
# 全连接层1
dense1 = layers.Dense(4096, activation="relu")(flatten)
# 全连接层2
dense2 = layers.Dense(4096, avtivation="relu")(dense1)
# 输出层
output = layers.Dense(1000, activation="softmax")(dense2)
# 产生模型
model = tf.keras.Model(inputs=input, outputs=output)
# 打印模型
print(model.summary())

在这里插入图片描述
        我们可以看到AlexNet的网络结构相较于LeNet,它的网络结构的深度更深了,对后面的网络结构有很大的影响。但是可以看到,这仍然是一些卷积、池化、全连接层的顺序拼接,没有更加复杂的结构出现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值