在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中__str__和__repr__方法的区别
Apr 17 Python
python类和函数中使用静态变量的方法
May 09 Python
Django与JS交互的示例代码
Aug 23 Python
Python使用try except处理程序异常的三种常用方法分析
Sep 05 Python
浅谈Python小波分析库Pywavelets的一点使用心得
Jul 09 Python
pytorch 加载(.pth)格式的模型实例
Aug 20 Python
python 上下文管理器及自定义原理解析
Nov 19 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
Mar 10 Python
python 写函数在一定条件下需要调用自身时的写法说明
Jun 01 Python
什么是python的函数体
Jun 19 Python
如何将json数据转换为python数据
Sep 04 Python
python 字符串格式化的示例
Sep 21 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 实现多服务器共享 SESSION 数据
2009/08/15 PHP
分享php多功能图片处理类
2016/05/15 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
PHP dirname功能及原理实例解析
2020/10/28 PHP
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
js获取元素相对窗口位置的实现代码
2014/09/28 Javascript
iScroll.js 使用方法参考
2016/05/16 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
2017/02/14 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
2017/03/02 Javascript
JavaScript实现动态增删表格的方法
2017/03/09 Javascript
Angular2利用组件与指令实现图片轮播组件
2017/03/27 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
2021/01/07 Vue.js
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
2018/03/19 Python
python实现输入数字的连续加减方法
2018/06/22 Python
用Python中的turtle模块画图两只小羊方法
2019/04/09 Python
Pandas分组与排序的实现
2019/07/23 Python
对python中各个response的使用说明
2020/03/28 Python
Python关键字及可变参数*args,**kw原理解析
2020/04/04 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
老师推荐信
2013/10/28 职场文书
超市总经理岗位职责
2014/02/02 职场文书
幼儿园中班评语大全
2014/04/17 职场文书
个人评语大全
2014/05/04 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
2014大学生批评与自我批评思想汇报
2014/09/21 职场文书
五年级上册复习计划
2015/01/19 职场文书
2015年班级工作总结范文
2015/04/03 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
Redis Cluster 集群搭建你会吗
2021/08/04 Redis
python的netCDF4批量处理NC格式文件的操作方法
2022/03/21 Python