在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比较文件夹比另一同名文件夹多出的文件并复制出来的方法
Mar 05 Python
Python CSV模块使用实例
Apr 09 Python
Python语言实现获取主机名根据端口杀死进程
Mar 31 Python
深入解析Python中的__builtins__内建对象
Jun 21 Python
python 性能优化方法小结
Mar 31 Python
Python爬取十篇新闻统计TF-IDF
Jan 03 Python
Python实现读取及写入csv文件的方法示例
Jan 12 Python
Python获取当前函数名称方法实例分享
Jan 18 Python
深入理解Python爬虫代理池服务
Feb 28 Python
tensorflow实现KNN识别MNIST
Mar 12 Python
Python实现的建造者模式示例
Aug 06 Python
Python秒算24点实现及原理详解
Jul 29 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
DC游戏Steam周三特惠 《蝙蝠侠》阿卡姆系列平史低
2020/04/09 欧美动漫
php中限制ip段访问、禁止ip提交表单的代码分享
2014/08/22 PHP
php实现递归抓取网页类实例
2015/04/03 PHP
浅谈PHP中Stream(流)
2015/06/08 PHP
jquery 常用操作方法
2010/01/28 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
深入浅析knockout源码分析之订阅
2016/07/12 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
2016/08/03 Javascript
Bootstrap中的fileinput 多图片上传及编辑功能
2016/09/05 Javascript
Node.js服务器开启Gzip压缩教程
2017/08/11 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
基于Vue的商品主图放大镜方案详解
2019/09/19 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
[01:01:51]EG vs VG Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
python 多进程通信模块的简单实现
2014/02/20 Python
Python3实现生成随机密码的方法
2014/08/23 Python
分析在Python中何种情况下需要使用断言
2015/04/01 Python
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
python查看列的唯一值方法
2018/07/17 Python
用python 实现在不确定行数情况下多行输入方法
2019/01/28 Python
python爬虫基础教程:requests库(二)代码实例
2019/04/09 Python
在python Numpy中求向量和矩阵的范数实例
2019/08/26 Python
python实现监控阿里云账户余额功能
2019/12/16 Python
python利用xlsxwriter模块 操作 Excel
2020/10/14 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
struct与class的区别
2014/02/03 面试题
医学生实习自我鉴定
2013/09/27 职场文书
党员违纪检讨书
2014/02/18 职场文书
团委书记的竞聘演讲稿
2014/04/24 职场文书
2014年端午节演讲稿范文
2014/05/23 职场文书
综合测评自我评价
2015/03/06 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis