深度之眼PyTorch训练营第二期 ---6、nn.Module与网络模型构建

摘要:
1、 网络模型创建步骤数据->优化器1。模型创建(1)构建子模块->激活函数和其他nn.init参数初始化方法nn.Modulepartameters:存储管理挂钩函数nn.Module总结了一个模块可以包含多个子模块。一个模块相当于一个操作。必须首先转发()函数。每个模块有八个字典来管理其属性。3.模型容器三种常见容器:

一、网络模型创建步骤

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

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的容器,用于按顺序包装一组网络层

    深度之眼PyTorch训练营第二期 ---6、nn.Module与网络模型构建第1张

    • 顺序性:各网络层之间严格按照顺序构建
    • 自带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》

 深度之眼PyTorch训练营第二期 ---6、nn.Module与网络模型构建第2张

AlexNet的结构

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

特征提取模块 分类模块

ctrl点击进入

免责声明:文章转载自《深度之眼PyTorch训练营第二期 ---6、nn.Module与网络模型构建》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇将多个markdown汇总成一个markdown或者pdf, 转换为电子书go:读取标准输入下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

RabbitMQ---6、客户端 API 的简介

1、主要的命名空间,接口和类  定义核心的API的接口和类被定义在RabbitMQ.Client这个命名空间下面:  所以要想使用RabbitMQ的功能,需要以下代码     using RabbitMQ.Client;   【1】、核心API的接口和类如下:    IModel:表示一个符合AMQP 0-9-1 协议的通道,并且提供了很多的操作方法   ...

js跨域问题的解决

  js提交请求给别的应用实例或者别的服务器,由于同源策略,存在js跨域的情况,我所知道两种处理方式; 1、jquery ajax+jsonp <script type="text/javascript" src="http://t.zoukankan.com/jquery.js"></script> <script type...

mysql last_insert_id() (转载)

先来看看官方的说明 The ID that was generated is maintained in the server on a per-connection basis. This means that the value returned by the function to a given client is the first AUTO_I...

SmartSql漫谈

最近在看smartSql源码,兄弟写的。写的很不错取取经。 记录下一些学习的东西,刚开始我先不系统的写了,随意一点哈,我看的差不多再给大家一个模块一个模块系统的写。 public T ExecuteScalar<T>(RequestContext context) { T result =...

原装js轮播图,鼠标移入停止轮播,移出继续轮播

要求:1、点击按钮,切换图片;    2、图片能够自动轮播;       3、鼠标移入,轮播停止;移出继续轮播; 知识点:1、定时器:setInterval();     2、鼠标移入事件:onmouseenter/onmouseover;       鼠标移出事件:onmouseleave/onmouseout; 难点:假设轮播图轮播到第二张图片,此时点...

C#语言基础— 输入与输出

1.1函数的四要素:名称、输入、输出、加工 1.2主函数:输出语句、输入语句: Static viod Main(string[] stgs)//下划线部分可以自己指定 { 主函数内容 } Console.ReadKey();//输入语句 Console.ReadLine();//输入语句 Console.WriteLine();//输出语句,自动换行 C...