在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提示No module named images的解决方法
Sep 29 Python
简单介绍Python中的round()方法
May 15 Python
python多进程中的内存复制(实例讲解)
Jan 05 Python
numpy.transpose对三维数组的转置方法
Apr 17 Python
python中协程实现TCP连接的实例分析
Oct 14 Python
python linecache 处理固定格式文本数据的方法
Jan 08 Python
Django model select的多种用法详解
Jul 16 Python
关于numpy.where()函数 返回值的解释
Dec 06 Python
200行python代码实现贪吃蛇游戏
Apr 24 Python
Keras之自定义损失(loss)函数用法说明
Jun 10 Python
浅谈python 类方法/静态方法
Sep 18 Python
python 模拟登陆163邮箱
Dec 15 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 heredoc和phpwind的模板技术使用方法小结
2008/03/28 PHP
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
php构造函数实例讲解
2013/11/13 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
YII Framework框架教程之国际化实现方法
2016/03/14 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
thinkphp中的多表关联查询的实例详解
2017/10/12 PHP
PHP获取星期几的常用方法小结
2018/12/18 PHP
ExtJS PropertyGrid中使用Combobox选择值问题
2010/06/13 Javascript
js注意img图片的onerror事件的分析
2011/01/01 Javascript
让新消息在网页标题闪烁提示的jQuery代码
2013/11/04 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
浅谈js的html元素的父节点,子节点
2016/08/06 Javascript
jquery hover 不停闪动问题的解决方法(亦为stop()的使用)
2017/02/10 Javascript
Angular.js中ng-include用法及多标签页面的实现方式详解
2017/05/07 Javascript
WebStorm ES6 语法支持设置&babel使用及自动编译(详解)
2017/09/08 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
Giglio德国网上精品店:奢侈品服装和配件
2016/09/23 全球购物
公司成立感言
2014/01/11 职场文书
家庭教育先进个人事迹材料
2014/01/24 职场文书
优秀毕业生事迹材料
2014/02/12 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
2015年世界艾滋病日活动总结
2015/03/24 职场文书
怎样写家长意见
2015/06/04 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书
Python 实现定积分与二重定积分的操作
2021/05/26 Python
pytorch 运行一段时间后出现GPU OOM的问题
2021/06/02 Python