在Tensorflow中实现leakyRelu操作详解(高效)


Posted in Python onJune 30, 2020

从github上转来,实在是厉害的想法,什么时候自己也能写出这种精妙的代码就好了

原地址:简易高效的LeakyReLu实现

代码如下:

我做了些改进,因为实在tensorflow中使用,就将原来的abs()函数替换成了tf.abs()

import tensorflow as tf
def LeakyRelu(x, leak=0.2, name="LeakyRelu"):
   with tf.variable_scope(name):
     f1 = 0.5 * (1 + leak)
     f2 = 0.5 * (1 - leak)
     return f1 * x + f2 * tf.abs(x) # 这里和原文有不一样的,我没试验过原文的代码,但tf.abs()肯定是对的

补充知识:激活函数ReLU、Leaky ReLU、PReLU和RReLU

“激活函数”能分成两类——“饱和激活函数”和“非饱和激活函数”。

在Tensorflow中实现leakyRelu操作详解(高效)

sigmoid和tanh是“饱和激活函数”,而ReLU及其变体则是“非饱和激活函数”。使用“非饱和激活函数”的优势在于两点:

1.首先,“非饱和激活函数”能解决所谓的“梯度消失”问题。

2.其次,它能加快收敛速度。

Sigmoid函数需要一个实值输入压缩至[0,1]的范围

σ(x) = 1 / (1 + exp(−x))

tanh函数需要讲一个实值输入压缩至 [-1, 1]的范围

tanh(x) = 2σ(2x) − 1

ReLU

ReLU函数代表的的是“修正线性单元”,它是带有卷积图像的输入x的最大函数(x,o)。ReLU函数将矩阵x内所有负值都设为零,其余的值不变。ReLU函数的计算是在卷积之后进行的,因此它与tanh函数和sigmoid函数一样,同属于“非线性激活函数”。这一内容是由Geoff Hinton首次提出的。

ELUs

ELUs是“指数线性单元”,它试图将激活函数的平均值接近零,从而加快学习的速度。同时,它还能通过正值的标识来避免梯度消失的问题。根据一些研究,ELUs分类精确度是高于ReLUs的。下面是关于ELU细节信息的详细介绍:

在Tensorflow中实现leakyRelu操作详解(高效)

Leaky ReLUs

ReLU是将所有的负值都设为零,相反,Leaky ReLU是给所有负值赋予一个非零斜率。Leaky ReLU激活函数是在声学模型(2013)中首次提出的。以数学的方式我们可以表示为:

在Tensorflow中实现leakyRelu操作详解(高效)

ai是(1,+∞)区间内的固定参数。

参数化修正线性单元(PReLU)

PReLU可以看作是Leaky ReLU的一个变体。在PReLU中,负值部分的斜率是根据数据来定的,而非预先定义的。作者称,在ImageNet分类(2015,Russakovsky等)上,PReLU是超越人类分类水平的关键所在。

随机纠正线性单元(RReLU)

“随机纠正线性单元”RReLU也是Leaky ReLU的一个变体。在RReLU中,负值的斜率在训练中是随机的,在之后的测试中就变成了固定的了。RReLU的亮点在于,在训练环节中,aji是从一个均匀的分布U(I,u)中随机抽取的数值。形式上来说,我们能得到以下结果:

在Tensorflow中实现leakyRelu操作详解(高效)

总结

下图是ReLU、Leaky ReLU、PReLU和RReLU的比较:

在Tensorflow中实现leakyRelu操作详解(高效)

PReLU中的ai是根据数据变化的;

Leaky ReLU中的ai是固定的;

RReLU中的aji是一个在一个给定的范围内随机抽取的值,这个值在测试环节就会固定下来。

以上这篇在Tensorflow中实现leakyRelu操作详解(高效)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
解析Python中的生成器及其与迭代器的差异
Jun 20 Python
利用pyinstaller或virtualenv将python程序打包详解
Mar 22 Python
python嵌套字典比较值与取值的实现示例
Nov 03 Python
Python解决N阶台阶走法问题的方法分析
Dec 28 Python
Python爬取数据保存为Json格式的代码示例
Apr 09 Python
Django ImageFiled上传照片并显示的方法
Jul 28 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
Aug 15 Python
Django REST framework 单元测试实例解析
Nov 07 Python
Python matplotlib以日期为x轴作图代码实例
Nov 22 Python
Python嵌套函数,作用域与偏函数用法实例分析
Dec 26 Python
Python Celery异步任务队列使用方法解析
Aug 10 Python
python实现文件+参数发送request的实例代码
Jan 05 Python
TensorFlow-gpu和opencv安装详细教程
Jun 30 #Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
Jun 30 #Python
python 最简单的实现适配器设计模式的示例
Jun 30 #Python
Tensorflow--取tensorf指定列的操作方式
Jun 30 #Python
解决TensorFlow程序无限制占用GPU的方法
Jun 30 #Python
tensorflow 大于某个值为1,小于为0的实例
Jun 30 #Python
基于tf.shape(tensor)和tensor.shape()的区别说明
Jun 30 #Python
You might like
php实现word转html的方法
2016/01/22 PHP
php支付宝APP支付功能
2020/07/29 PHP
javascript 检测浏览器类型和版本的代码
2009/09/15 Javascript
javascript 特性检测并非浏览器检测
2010/01/15 Javascript
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
JavaScript中使用构造函数实现继承的代码
2010/08/12 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
javascript学习笔记(五) Array 数组类型介绍
2012/06/19 Javascript
同时使用n个window onload加载实例介绍
2013/04/25 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
JS的参数传递示例介绍
2014/02/08 Javascript
js实现每日自动换一张图片的方法
2015/05/04 Javascript
JS动画效果打开、关闭层的实现方法
2015/05/09 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
Node.js操作Firebird数据库教程
2016/03/04 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
JavaScript实现自动切换图片代码
2016/10/11 Javascript
利用VUE框架,实现列表分页功能示例代码
2017/01/12 Javascript
Vue——解决报错 Computed property "****" was assigned to but it has no setter.
2020/12/19 Vue.js
Pyramid将models.py文件的内容分布到多个文件的方法
2013/11/27 Python
Phantomjs抓取渲染JS后的网页(Python代码)
2016/05/13 Python
python 剪切移动文件的实现代码
2018/08/02 Python
Python实现查询某个目录下修改时间最新的文件示例
2018/08/29 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
Django的models中on_delete参数详解
2019/07/16 Python
python3 配置logging日志类的操作
2020/04/08 Python
初一英语教学反思
2014/01/11 职场文书
能源工程专业应届生求职信
2014/03/01 职场文书
服务理念标语
2014/06/18 职场文书
社区关爱留守儿童活动方案
2014/08/22 职场文书
村创先争优活动总结
2014/08/28 职场文书
恰同学少年观后感
2015/06/08 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
Golang 切片(Slice)实现增删改查
2022/04/22 Golang