在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中使用dom模块生成XML文件示例
Apr 05 Python
Python 详解基本语法_函数_返回值
Jan 22 Python
Python中列表与元组的乘法操作示例
Feb 10 Python
Python实现将多个空格换为一个空格.md的方法
Dec 20 Python
Python使用POP3和SMTP协议收发邮件的示例代码
Apr 16 Python
详解python中的hashlib模块的使用
Apr 22 Python
python替换字符串中的子串图文步骤
Jun 19 Python
python numpy数组中的复制知识解析
Feb 03 Python
opencv中图像叠加/图像融合/按位操作的实现
Apr 01 Python
Python 如何实现访问者模式
Jul 28 Python
python打包多类型文件的操作方法
Sep 21 Python
基于PyTorch中view的用法说明
Mar 03 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
1982年日本摄影师镜头下的中国孩子 那无忧无虑的童年
2020/03/12 杂记
PHP中最容易忘记的一些知识点总结
2013/04/28 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
2016/10/13 PHP
newxtree.js代码
2007/03/13 Javascript
Javascript常用运算符(Operators)-javascript基础教程
2007/12/14 Javascript
JQuery textlimit 显示用户输入的字符数 限制用户输入的字符数
2009/05/14 Javascript
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
js循环改变div颜色具体方法
2013/06/25 Javascript
原始的js代码和jquery对比体会
2013/09/10 Javascript
提取字符串中年月日的函数代码
2013/11/05 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
JavaScript使用slice函数获取数组部分元素的方法
2015/04/06 Javascript
js读取并解析JSON类型数据的方法
2015/11/14 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
2015/11/27 Javascript
深入了解JavaScript的逻辑运算符(与、或)
2016/12/20 Javascript
微信小程序 地图map实例详解
2017/06/07 Javascript
JavaScript实现图片上传并预览并提交ajax
2019/09/30 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
Node.JS获取GET,POST数据之queryString模块使用方法详解
2020/02/06 Javascript
javascript开发实现贪吃蛇游戏
2020/07/31 Javascript
[05:06]2017亚洲邀请赛DAC回顾片
2017/04/19 DOTA
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
全面了解python中的类,对象,方法,属性
2016/09/11 Python
Python查询IP地址归属完整代码
2017/06/21 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
2018/11/10 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
canvas使用注意点总结
2013/07/19 HTML / CSS
美国顶级户外凉鞋品牌:Chacos
2017/03/27 全球购物
公司接待方案
2014/03/08 职场文书
班级寄语大全
2014/04/10 职场文书
自荐信怎么写
2015/03/04 职场文书
送给客户微信问候语!
2019/07/04 职场文书
Nginx 502 Bad Gateway错误原因及解决方案
2021/03/31 Servers