Pytorch实战-03 模型创建

Pytorch学习笔记-03 模型创建

模型创建步骤

image-20211118212352863

两要素:

构建子模块

init()

拼接子模块

forward()

nn.Module

image-20211118212740819

nn.Module

  • parameters : 存储管理 nn.Parameter 类
  • modules : 存储管理 nn.Module 类
  • buffers :存储管理缓冲属性,如 BN 层中的 running_mean

总结

  • 一个 module 可以包含多个子 module
  • 一个 module 相当于一个运算,必须实现 forward() 函数
  • 每个 module 都有 8 个字典管理它的属性

模型容器 Containers

Sequential

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

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

ModuleList

nn.ModuleList

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

ModuleLDict

nn.ModuleDict
是 nn.module 的容器,用于包装一组网络层,以 索引 方式调用网络层
主要方法:

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

总结

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

卷积层

nn.Conv2d

功能:对多个二维信号进行二维卷积
主要参数:

  • in_channels :输入通道数
  • out_channels :输出通道数,等价于卷积核个数
  • kernel_size :卷积核尺寸
  • stride :步长
  • padding :填充个数
  • dilation :空洞卷积大小 (用于增大感受野
  • groups :分组卷积设置( 模型压缩
  • bias :偏置

卷积维度:一般情况下 ,卷积核在几个维度上滑动,就是几维卷积

转置卷积

转置卷积又称为反卷积Deconvolution 和部分跨越卷积 Fractionallystrided Convolution ) 用于 对图像进行上采样 UpSample

池化层

池化运算:对信号进行收集 ”并 总结 ”,类似水池收集水资源,因而得名池化层

nn.MaxPool2d

功能:对二维信号(图像)进行最大值池化
主要参数:

  • kernel_size :池化核尺寸
  • stride :步长
  • padding :填充个数
  • dilation :池化核间隔大小
  • ceil_mode :尺寸向上取整
  • return_indices :记录池化像素索引

nn.AvgPool2d

功能:对二维信号(图像)进行平均值池化
主要参数:

  • kernel_size :池化核尺寸
  • stride :步长
  • padding :填充个数
  • ceil_mode :尺寸向上取整
  • count_include_pad :填充值用于计算
  • divisor_override :除法因子

nn.MaxUnpool2d

功能:对二维信号(图像)进行最大值池化上采样
主要参数:

  • kernel_size :池化核尺寸
  • stride :步长
  • padding :填充个数

激活函数层

激活函数对特征进行非线性变换,赋予多层神经网络具有深度 的意义

nn.Sigmoid

特性:

  • 输出值在 ( 0,1),符合概率
  • 导数范围是 [0, 0.25)易导致梯度消失
  • 输出为非 0 均值,破坏数据分布

nn.tanh

特性:

  • 输出值在 (-1,1),数据符合 0 均值
  • 导数范围是 (0,1) 易导致梯度消失

nn.ReLU

特性:

  • 输出值均为正数,负半轴导致死神经元
  • 导数是 1, 缓解梯度消失,但易引发梯度爆炸

nn.LeakyReLU

negative_slope : 负半轴斜率

nn.PReLU

init : 可学习斜率

nn.RReLU

lower : 均匀分布下限

特性:

  • 输出值均为正数,负半轴导致死神经元
  • 导数是 1, 缓解梯度消失,但易引发梯度爆炸

nn.LeakyReLU

negative_slope : 负半轴斜率

nn.PReLU

init : 可学习斜率

nn.RReLU

lower : 均匀分布下限
upper 均匀分布上限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yuetianw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值