当前位置: 首页 > news >正文

pytorch 常见的网络层(卷积层,池化层,线性层,激活函数)

卷积层

卷积运算:卷积核在图像上滑动,相应位置进行乘加;
卷积层:又称为滤波器,过滤器,可以认为是某种模式,某种特征。

卷积的过程类似于用一个模版去图像上寻找与它相似的区域,与卷积模式越相似,激活值越高,从而实现特征的提取。

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

二维卷积示意图

在这里插入图片描述

二维卷积(多通道版本)

 如果是多个通道的卷积核,首先按照单个通道进行操作,然后将得到的多个通道的特征图进行相加得到最后的结果。如下图:输入特征是3个通道的,那么单个卷积核也是三个通道的,首先进行卷积然后将多个通道的卷积进行相加。在这里插入图片描述在这里插入图片描述

三维卷积

三维卷积有点类似于上面的二维卷积的多通道版本。但是这是完全不同的。二维卷积卷积核是二维的,输入图像存在通道这个维度,类似于二维卷积,三维卷积的卷积核是三维的,如果在存在一个维度那么输入图像其实是四维的。

空洞卷积

 为扩大感受野,在卷积核里面的元素之间插入空格来“膨胀”内核,形成空洞卷积。

用膨胀率参数L表示要扩大内核的范围,即在内核元素之间插入L-1个空格。当L=1时,则内核元素之间没有插入空格,变为标准卷积。

下图为L=2的空洞卷积

在这里插入图片描述

可分离卷积

空间可分离卷积

空间可分离卷积是将卷积核分解为两项独立的核分别进行操作

在这里插入图片描述

 深度可分离卷积

深度可分离卷积由两步组成:深度卷积和1x1卷积。

深度可分离卷积首先是进行深度卷积,将输入按照通道分成每一份,那么每个卷积核变成单通道的了,进行卷积之后然后进行堆叠。

详细请看深度可分离卷积

然后在进行 1x1卷积。

分组卷积

2012年,AlexNet论文中最先提出来的概念,当时主要为了解决GPU显存不足问题,将卷积分组后放到两个GPU并行执行。
在分组卷积中,卷积核被分成不同的组,每组负责对相应的输入层进行卷积计算,最后再进行合并。

混洗分组卷积(Shuffled Grouped Convolution)

在分组卷积中,卷积核被分成多个组后,输入层卷积计算的结果仍按照原先的顺序进行合并组合,这就阻碍了模型在训练期间特征信息在通道组之间流动,同时还削弱了特征表示。而混洗分组卷积,便是将分组卷积后的计算结果混合交叉在一起输出

 反卷积

卷积是对图像提取特征,图像的尺寸会变小。

反卷积是图像进行上采样。

在这里插入图片描述

池化层

池化运算:对信号进行“收集” 并“总结

常见的池化操作有最大池化,平均池化。

nn.Maxpool2()对二维信号(图像)进行最大值池化

nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)

nn.MaxUnpool2d()对二维信号(图像)进行最大值池化上采样

nn.AvgPool2d() 对二维信号(图像)进行平均值池化

线性层

线性层又称为全连接层,其每个神经元与上一层所有神经元相连,实现对前一层的线性组合,线性变换.

nn.Linear(in_features, out_features, bias=True)

 对一维向量(信号)进行线性组合

激活函数层

不使用激活函数的话,神经网络的每层都只是做线性变换,多层叠加后还是线性变换。因为线性模型的表达能力通常不够,所以引入激活函数,加入非线性因素,来增强模型的表达能力。

常见的激活函数

Sigmoid激活函数

sigmoid激活函数,它将一个实数值压缩到0至1范围内,

sigmoid函数的主要缺点:

  1. 梯度消失:当输入很大或很小时,sigmoid的梯度为0,所以会导致梯度消失。
  2. 不是0均值:sigmoid函数输出不是0均值的
  3. 计算量太大:指数函数与其他非线性激活函数相比,计算量太大

Tanh激活函数

tanh也是把实数值进行压缩,它将输出值压缩到-1到1之间,输出是0均值的,可以将tanh看作两个sigmoid加在一起的。

优点:输出是0均值
缺点:存在梯度消失问题,指数函数计算量大

ReLu

优点:

● Relu解决了梯度消失问题,至少在正区间内,神经元不会饱和;
● 运算速度快,Relu只是线性关系,不需要指数运算,不管向前传播还是反向传播,速度要比sigmoid和tanh快。
缺点:
● Relu输出不是零均值;
● 随着训练的进行,会出现权值无法更新,神经元死亡的问题。


Leaky Relu

为了解决relu激活函数在x<0时的梯度消失问题,引入Leaky Relu

优点:
● 神经元不会出现死亡问题;
● 对于所有的输入,不管是大于0还是小于等于0,神经元不会饱和;
● 计算速度快,由于只有线性计算,不需要指数运算,无论是正向传播还是反向传播,计算速度都要比sigmoid和tanh快。
缺点:Leaky ReLU函数中的α,需要通过先验知识人工赋值。
 

PRelu

RReLU的英文全称是“Randomized Leaky ReLU”,中文名字叫“随机修正线性单元”。RReLU是Leaky ReLU的随机版本。

特点:

  1. RReLU是Leaky ReLU的random版本,在训练过程中,α是从一个高斯分布中随机出来的,然后再测试过程中进行修正。
  2. 数学形式与PReLU类似,但RReLU是一种非确定性激活函数,其参数是随机的

ELU

指数线性单元。

优点:
● ELU包含了ReLU的所有优点。
● 神经元不会出现死亡的情况。
● ELU激活函数的输出均值是接近于零的。
缺点:计算的时候是需要计算指数的,计算效率低的问题。

参考文献:

【图解AI:动图】各种类型的卷积,你认全了吗? - 雪饼的个人空间 - OSCHINA - 中文开源技术交流社区pytorch学习笔记八:nn网络层——激活函数层_Dear_林的博客-CSDN博客_pytorch 激活层

相关文章:

  • java计算机毕业设计计算机系教师教研科研管理系统源码+数据库+系统+lw文档+mybatis+运行部署
  • Redis持久化机制
  • 大数据随记 —— DataFrame 与 RDD 之间的相互转换
  • React 学习笔记 2022-08
  • 【实用工具系列之爬虫】python爬取资讯数据
  • 易基因|植物育种:ChIP-seq(组蛋白)揭示H3K36me修饰影响温度诱导的植物可变剪接和开花
  • java计算机毕业设计计算机组成原理教学演示软件源码+数据库+系统+lw文档+mybatis+运行部署
  • Elasticsearch:简体繁体转换分词器 - STConvert analysis
  • C语言经典算法实例1:求二维数组最大最小值
  • 【C++入门基础】命名空间 | 缺省参数 | 函数重载 | 引用 | 内联函数
  • VMware安装与配置Linux 虚拟机
  • Code For Better 谷歌开发者之声——我与Android同成长
  • 【深度学习】(五)目标检测——下篇
  • web前端面试高频考点——Vue3.0新增API(生命周期,ref、toRef 和 toRefs 的理解和最佳使用方式)
  • 管理经济学--重点
  • Apache Spark Streaming 使用实例
  • Computed property XXX was assigned to but it has no setter
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • java 多线程基础, 我觉得还是有必要看看的
  • JavaWeb(学习笔记二)
  • js操作时间(持续更新)
  • JS字符串转数字方法总结
  • Lucene解析 - 基本概念
  • Vue官网教程学习过程中值得记录的一些事情
  • 程序员该如何有效的找工作?
  • 使用SAX解析XML
  • 我建了一个叫Hello World的项目
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 协程
  • Spring Batch JSON 支持
  • 第二十章:异步和文件I/O.(二十三)
  • 整理一些计算机基础知识!
  • ​iOS实时查看App运行日志
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • $.ajax,axios,fetch三种ajax请求的区别
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (3)nginx 配置(nginx.conf)
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (一)RocketMQ初步认识
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .net refrector
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .NET连接数据库方式
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • @Builder用法
  • @property @synthesize @dynamic 及相关属性作用探究
  • @RequestParam,@RequestBody和@PathVariable 区别
  • @Transactional类内部访问失效原因详解
  • @Transactional事务注解内含乾坤?
  • [20150707]外部表与rowid.txt
  • [20161101]rman备份与数据文件变化7.txt