在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 django集成cas验证系统
Jul 14 Python
Python内置的字符串处理函数详细整理(覆盖日常所用)
Aug 19 Python
详细介绍Python中的偏函数
Apr 27 Python
python实现马耳可夫链算法实例分析
May 20 Python
python+opencv实现动态物体识别
Jan 09 Python
Django的用户模块与权限系统的示例代码
Jul 24 Python
python使用if语句实现一个猜拳游戏详解
Aug 27 Python
Python发送手机动态验证码代码实例
Feb 28 Python
numpy的Fancy Indexing和array比较详解
Jun 11 Python
Python3爬虫里关于代理的设置总结
Jul 30 Python
python利用 keyboard 库记录键盘事件
Oct 16 Python
Django框架中表单的用法
Jun 10 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的ob_start来生成静态页面的方法分析
2011/03/09 PHP
基于PHP array数组的教程详解
2013/06/05 PHP
解析PHP 5.5 新特性
2013/07/02 PHP
一个漂亮的php验证码类(分享)
2013/08/06 PHP
WordPress中查询文章的循环Loop结构及用法分析
2015/12/17 PHP
PNG背景在不同浏览器下的应用
2009/06/22 Javascript
JavaScript中用toString()方法返回时间为字符串
2015/06/12 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
jQuery中选择器的基础使用教程
2016/05/23 Javascript
Angular Module声明和获取重载实例代码
2016/09/14 Javascript
浅析JS抽象工厂模式
2017/12/14 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
基于Express框架使用POST传递Form数据
2019/08/10 Javascript
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
2015/05/20 Python
python3.5实现socket通讯示例(TCP)
2017/02/07 Python
python学习教程之使用py2exe打包
2017/09/24 Python
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
Python中单例模式总结
2018/02/20 Python
pandas读取csv文件,分隔符参数sep的实例
2018/12/12 Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
2019/06/04 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
简单了解python代码优化小技巧
2019/07/08 Python
Python安装whl文件过程图解
2020/02/18 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
浅谈keras.callbacks设置模型保存策略
2020/06/18 Python
Django websocket原理及功能实现代码
2020/11/14 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
《蚕姑娘》教学反思
2014/04/15 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
2015年社区服务活动总结
2015/03/25 职场文书
具结保证书范本
2015/05/11 职场文书
生日宴会祝酒词
2015/08/10 职场文书