网络层容器(Containers)
Sequential
nn.Sequential是nn.module的容器,用于按顺序包装一组网络层
顺序性:各网络层之间严格按照顺序构建
自带forward():自带的forward里,通过for循环依次执行前向传播运算
ModuleList
nn.ModuleList是nn.module的容器,用于包装一组网络层,以迭代方式调用网络层
append()#在ModuleList后面添加网络层
extend()#拼接两个ModuleList
insert()#指定在ModuleList中位置插入网络层
clear()#清空ModuleDict
items()#返回可迭代的键值对(key-value pairs)
keys()#返回字典的键(key)
values()#返回字典的值(value)
pop()#返回一对键值,并从字典中删除
总结
nn.Sequential:顺序性,各网络层之间严格按顺序执行,常用于block构建
nn.ModuleList:迭代性,常用于大量重复网构建,通过for循环实现重复构建
nn.ModuleDict:索引性,常用于可选择的网络层
AlexNet构建
AlexNet:2012年以高出第二名10多个百分点的准确率获得ImageNet分类任务冠军,开创了卷积神经网络的新时代
AlexNet特点如下:
1. 采用ReLU:替换饱和激活函数,减轻梯度消失
2. 采用LRN(Local Response Normalization):对数据归一化,减轻梯度消失
3. Dropout:提高全连接层的鲁棒性,增加网络的泛化能力
4. Data Augmentation:TenCrop,色彩修改
参考文献: 《ImageNet Classification with Deep Convolutional Neural Networks 》