在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实现的防DDoS脚本
Feb 08 Python
Python实现简单状态框架的方法
Mar 19 Python
python 梯度法求解函数极值的实例
Jul 10 Python
python装饰器练习题及答案
Nov 01 Python
详解Python 重学requests发起请求的基本方式
Feb 07 Python
django在保存图像的同时压缩图像示例代码详解
Feb 11 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
Jul 07 Python
openCV提取图像中的矩形区域
Jul 21 Python
如何基于Python爬虫爬取美团酒店信息
Nov 03 Python
python安装sklearn模块的方法详解
Nov 28 Python
Python解析微信dat文件的方法
Nov 30 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
Aug 23 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
PHP4和PHP5共存于一系统
2006/11/17 PHP
请离开include_once和require_once
2013/07/18 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
php及codeigniter使用session-cookie的方法(详解)
2017/04/06 PHP
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
基于laravel where的高级使用方法
2019/10/10 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
精通Javascript系列之数值计算
2011/06/07 Javascript
jQuery拖动图片删除示例
2013/05/10 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
JS获取网页图片name属性的方法
2015/04/01 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
纯原生js实现table表格的增删
2017/01/05 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
详解tween.js 中文使用指南
2018/01/05 Javascript
Angular5中调用第三方库及jQuery的添加的方法
2018/06/07 jQuery
微信小程序设置滚动条过程详解
2019/07/25 Javascript
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
微信小程序实现底部弹出框
2020/11/18 Javascript
[01:21]辉夜杯战队访谈宣传片—CDEC
2015/12/25 DOTA
Python爬虫获取整个站点中的所有外部链接代码示例
2017/12/26 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
安踏官方商城:anta.cn
2019/12/16 全球购物
Strathberry苏贝瑞中国官网:西班牙高级工匠手工打造
2020/10/19 全球购物
家长对老师的评语
2014/04/18 职场文书
2014年仓管员工作总结
2014/11/18 职场文书
看雷锋电影观后感
2015/06/10 职场文书
教师廉政准则心得体会
2016/01/20 职场文书
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python
java实现自定义时钟并实现走时功能
2022/06/21 Java/Android