美文网首页python
CNN变体网络之--AlexNet

CNN变体网络之--AlexNet

作者: 晨光523152 | 来源:发表于2019-08-07 21:57 被阅读60次

AlexNet与LeNet-5区别

AlexNet不同于LeNet-5的地方:

  • 使用了最大池化
  • 使用了ReLu激活函数
  • ReLu激活函数之后,使用了本地响应归一化:LRN(Local Response Normalization)

LRN功能

LRN:能够使得最强烈的激活来抑制同一位置但是在不同特征图中的神经元(这种竞争激活特性已经在生物神经元中被观察到)。这种特性鼓励不同特征图变得专业化,推动它们分离并迫使它们去探索新的功能,最终改进泛化。

LRN公式

b_{x, y}^{i} = a_{x, y}^{i}(k + \alpha \sum_{j = j_{loww}}^{j_{high}}(a_{x, y}^{j})^{- \beta} )\;\;\;\;\;\; (1)

其中,x, y表示第x行,第y列,i表示第i个特征图,a_{x, y}^{i}表示经过ReLu后的输出,b_{x, y}^{i}表示第i个特征图中第x行,第y列的值经过归一化后的输出
\begin{split} j_{low} &= max(0, i - \frac{r}{2})\;\;\;\;\;\;(2)\\ j_{high} & = min(i + \frac{r}{2}, f_{n} - 1) \;\;\;\;\;\;(2) \end{split}
其中,k, r, \alpha是超参数,k被称为偏置参数,r被称为深度半径,f_{n}是特征图的数量。
在AlexNet中,超参数设置如下:r = 2, \alpha = 0.00002, \beta = 0.75, k = 1
如果r = 2并且神经元被激活,那么它将抑制位于其上面和下面的特征图中的神经元的激活

AlexNet网络架构

AlexNet网络架构

例子

还是在HSI上实验一下,切分数据集的函数如我之前的《CNN变体网络之--LeNet》里面一样。
为了和LeNet作比较,我直接把激活函数换成了ReLu,然后在每一个激活之后加了个LRU。

  • AlexNet
model = keras.Sequential()
model.add(layers.Conv2D(input_shape = (X_train.shape[1], X_train.shape[2], X_train.shape[3]),
                        strides = (1, 1), filters = 6, kernel_size = (5, 5), padding = 'same',
                        activation = 'relu'))
model.add(layers.BatchNormalization())
model.add(layers.AveragePooling2D(pool_size = (2, 2)))
model.add(layers.Conv2D(filters = 16, kernel_size = (5, 5), strides = (1, 1), padding = 'valid', activation = 'relu'))
model.add(layers.BatchNormalization())
model.add(layers.AveragePooling2D(pool_size = (2, 2)))
model.add(layers.Conv2D(filters = 120, kernel_size = (5, 5), strides = (1, 1), padding = 'valid', activation = 'relu'))
model.add(layers.BatchNormalization())
model.add(layers.Flatten())
model.add(layers.Dense(84, activation = 'relu'))
model.add(layers.Dense(y_train.shape[1], activation = 'softmax'))
model.compile(loss = keras.losses.CategoricalCrossentropy(),optimizer = keras.optimizers.SGD(),
             metrics = ['accuracy'])
model.summary()
history = model.fit(X_train, y_train, validation_split=0.2, epochs=n_epochs,
                    batch_size=batch_size)
plt.figure()
plt.plot(history.history['loss'], label='train_loss')
plt.plot(history.history['val_loss'], label='val_loss')
plt.legend()
plt.xlabel('epochs')
plt.ylabel('loss')
plt.title('AlexNet-5_train')

plt.figure()
plt.plot(history.history['accuracy'], label='train_accuracy')
plt.plot(history.history['val_accuracy'], label='val_accuracy')
plt.legend()
plt.xlabel('epochs')
plt.ylabel('accuracy')
plt.title('Alex-5_accuracy')

plt.show()

test = model.evaluate(X_test, y_test)
print(test)

image.png
  • 实验结果图


    AlexNet损失
    AlexNet准确率
  • 实验结果:
    9225/9225 [==============================] - 105s 11ms/sample - loss: 0.1829 - accuracy: 0.9514

参考资料:
机器学习实战
https://blog.csdn.net/wmy199216/article/details/71171401

相关文章

  • CNN变体网络之--AlexNet

    AlexNet与LeNet-5区别 AlexNet不同于LeNet-5的地方: 使用了最大池化 使用了ReLu激活...

  • CNN变体网络之--GoogLeNet

    GoogLeNet的亮点 写成GoogLeNet,而不是GoogleNet,是为了向LeNet致敬。GoogLeN...

  • 说说卷积神经网络(2):AlexNet

    上文说了CNN的基本结构,今天说说AlexNet,这也是一种典型的CNN网络,虽然有一点年份了。AlexNet是A...

  • CNN基础+CIFAR-10图片分类

    一:CNN基础 深度学习的热潮正是由2012年AlexNet的出现而引发的,因此,学习AlexNet网络的结构,对...

  • 卷积神经网络之AlexNet

    AlexNet网络结构剖析 2012年AlexNet在ImageNet大赛上一举夺冠,展现了深度CNN在图像任务上...

  • CNN学习笔记(一)

    一、CNN发展简史  CNN可以有效降低传统神经网络(全连接)的复杂性,常见的网络结构有LeNet、AlexNet...

  • CNN之——AlexNet

    深度卷积神经网络(AlexNet) AlexNet⾸次证明了学习到的特征可以超越⼿⼯设计的特征 AlexNet与L...

  • 图像识别模型学习

    大话CNN经典模型:AlexNet 大话CNN经典模型:VGGNet 大话CNN经典模型:LeNet 基于深度学习...

  • Tensorflow 实现经典卷积神经网络AlexNet

    AlexNet将CNN的基本原理应用到很深很广的网络中,AlexNet主要使用到的新技术点如下: (1)成功使用R...

  • CNN变体网络之--LeNet-5

    LeNet-5是CNN的变种之一。 对CNN的学习是看吴恩达的课程。 暂时没明白LeNet-5效果那么好的原因,但...

网友评论

    本文标题:CNN变体网络之--AlexNet

    本文链接:https://www.haomeiwen.com/subject/bjoadctx.html