深入探索卷积神经网络:从基础到高级架构(二)
VGG:
VGG结构:
VGG19共有16个卷积层和3个全连接层。 此外,还有5个最大池化层分布在不同的卷积层之下。
设计优势:
1、使用多个3×3卷积代替大尺寸卷积核
2、可重复使用的卷积块来构建深度卷积神经网络
3、性能比 AlexNet 更深入更大
nn.Module
1、继承自Module类,可自动提取可学习的参数
2、适用场景:卷积层、全连接层、dropout层等
3、写法:一般为nn.Xxx,如nn.Linear、nn.Conv2d、nn.CrossEntropyLoss等
nn.functional
1、纯函数风格,更像是功能函数
2、适用场景:激活函数、池化层等
3、写法:一般为nn.funtional.xxx,如nn.funtional.linear、nn.funtional.conv2d、nn.funtional.cross_entropy等
两者的区别:
1、nn.Xxx继承于nn.Module,nn.Xxx 需要先实例化并传入参数,然后以函数调用的方式调用实例化的对象并传入输入数据。它能够很好的与nn.Sequential结合使用,而nn.functional.xxx无法与nn.Sequential结合使用。
2、nn.Xxx不需要自己定义和管理weight、bias参数;而nn.functional.xxx需要你自己定义weight、bias,每次调用的时候都需要手动传入weight、bias等参数, 不利于代码复用。
3、dropout操作在训练和测试阶段是有区别的,使用nn.Xxx方式定义dropout,在调用model.eval()之后,自动实现状态的转换,而使用nn.functional.xxx却无此功能。