AlexNet采用深度网络结构,由8层组成,包括5个卷积和3个全连接层,这种深度结构使得网络能够学习到更复杂的特征表示
1.ReLU激活函数:
首次成功的在较深的网络中使用ReLU激活函数,解决了梯度消失问题,加快了训练速度
2.Dropout正则化:
为了减少过拟合,在全连接层1引入dropout机制随机丢弃一部分神经元的激活输出
3.局部响应归一化LRN:
这是一种规范化技术,用于控制神经元的激活强度,增强模型泛化能力。
4.重叠池化:
池化窗口的步长小于窗口大小,有效扩大训练集,减少过拟合
5.多GPU:
采用两块GPU并行训练,提高训练效率
net = nn. Sequential()
net.add(
nn.Conv2D(96,kernel_size=11,strides = 4,activation='relu'),
nn.MaxPool2D(pool_size=3,strides=2),
nn.Conv2D(256,kernel_size=5,padding=2,activation='relu'),
nn.MaxPool2D(pool_size=3,strides=2),
nn.Conv2D(384,kernel_size=3,padding=1,activation='relu'),
nn.Conv2D(384, kernel_size=3, padding=1, activation='relu'),
nn.Conv2D(256, kernel_size=3, padding=1, activation='relu'),
nn.MaxPool2D(pool_size=3, strides=2),
nn.Dense(4096, activation='relu'), nn.Dropout(0.5),
nn.Dense(4096, activation='relu'), nn.Dropout(0.5),
nn.Dense(10))
看一下AlexNet好在哪里:
首先就是深度足够深,能学习复杂的特征表示
使用不同大小的卷积核来捕捉不同尺度的特征,较大的卷积核能够捕捉图像中粗略特征,较小的能捕捉更精细的特征。
使用填充,保持或减少特征图的空间尺寸,有助于保留更多信息。
使用正则化,减少过拟合,提高泛化能力
全连接层能将学习到的特征映射到最终的输出,这里使用两个4096个神经元的全连接层,有助于学习特征的高层次表示