zoukankan      html  css  js  c++  java
  • 深度之眼PyTorch训练营第二期 ---6、nn.Module与网络模型构建

    一、网络模型创建步骤

    数据->模型->损失函数->优化器

    1、模型创建

    (1)构建子模块->卷积层,池化层,激活函数层

    (2)拼接子模块->LeNet,AlexNet,ResNet等

    2、权值初始化->Xavier,Kaiming,均匀分布,正态分布

    二、nn.Module属性

    • torch.nn 
      • nn.Parameter  张量子类,表示可学习参数,如weight,bias
      • nn.Module  所有网络层基类,管理网络属性
      • nn.functional 函数具体实现,如卷积,池化,激活函数等
      • nn.init  参数初始化方法
    • nn.Module
      • parameters:存储管理nn.Parameter类
      • modules:存储管理nn.Moudle类
      • buffer:存储管理缓冲属性,如BN层中的running_mean
      • ***_hooks:存储管理钩子函数
    • nn.Module总结
    1. 一个module可以包含多个子module
    2. 一个module相当于一个运算,必须事先forward()函数
    3. 每个module都有8个字典管理它的属性

    三、模型容器Containers

    三个常用容器:

    • nn.Sequetial -->按顺序包装多个网络层
    • nn.ModuleList-->像python的list一样包装多个网络层
    • nn.ModuleDict-->像python的dict一样包装多个网络层 加上名称

    1、nn.Sequential是nn.module的容器,用于按顺序包装一组网络层

        

      • 顺序性:各网络层之间严格按照顺序构建
      • 自带forward():自带的forward里,通过for循环依次执行前向传播运算

    2、nn.ModuleList 用于包装一组网络层,以迭代方式调用网络层

    主要方法:

    • append():在ModuleList后面添加网络层
    • extend():拼接两个ModuleList
    • insert():指定在ModuleList中位置插入网络层

    3、nn.ModuleDict 用于包装一组网络层,以索引方式调用网络层

    主要方法:

    • clear():清空ModuleList
    • items():返回可迭代的键值对(key-value paris)
    • keys():返回字典的键key
    • values():返回字典的值values
    • pop():返回一对键值,并从字典中删除

    总结

    • nn.Sequential:顺序性,各网络层之间严格按顺序执行,常用于block构建
    • nn.ModuleList:迭代性,常用于大量重复网构建,通过for循环实现重复构建
    • nn.ModuleDict:索引性,常用于可选择的网络层

    四、AlexNet构建

    AlexNet特点如下:

    1、采用ReLU:替换饱和激活函数,减轻梯度消失

    2、采用LRN(Local Response Normalization):对数据归一化,减轻梯度消失

    3、Dropout:提高全连接层的鲁棒性,增加网络的泛化能力

    4、Data Augmentation:TenCrop,色彩修改

    参考文献:《ImageNet Classification with Deep Convolutional Neural Networks》

     

    AlexNet的结构

    采用Sequential将卷积池化进行堆叠

    特征提取模块 分类模块

    ctrl点击进入

  • 相关阅读:
    WPF后台生成datatemplate(TreeViewItem例子)
    后台根据数据模版内的子控件获取使用该模版的控件
    逻辑代码实现拼音首字母检索
    自定义LISTBOX内子项为checkbox或者radio时,关于IsChecked绑定
    siliverlight某些事件无法响应
    页面内容不能铺满浏览器窗口的解决方法
    linux sort命令学习
    linux find命令学习
    linux tr命令学习
    linux cat命令学习
  • 原文地址:https://www.cnblogs.com/cola-1998/p/11805415.html
Copyright © 2011-2022 走看看