本次介绍PReLU激活函数,方法来自于何凯明paper 《Delving Deep into Rectifiers:Surpassing Human-Level Performance on ImageNet Classification》.

  • PReLU激活
  • PReLU的几点说明
  • PReLU激活

PReLU(Parametric Rectified Linear Unit), 顾名思义:带参数的ReLU。二者的定义和区别如下图:


如果ai=0,那么PReLU退化为ReLU;如果ai是一个很小的固定值(如ai=0.01),则PReLU退化为Leaky ReLU(LReLU)。 有实验证明,与ReLU相比,LReLU对最终的结果几乎没什么影响。

PReLU的几点说明
(1) PReLU只增加了极少量的参数,也就意味着网络的计算量以及过拟合的危险性都只增加了一点点。特别的,当不同channels使用相同的ai时,参数就更少了。

(2) BP更新ai时,采用的是带动量的更新方式,如下图:

上式的两个系数分别是动量和学习率。 
需要特别注意的是:更新ai时不施加权重衰减(L2正则化),因为这会把ai很大程度上push到0。事实上,即使不加正则化,试验中ai也很少有超过1的。

(3) 整个论文,ai被初始化为0.25。

方法一:

def parametric_relu(_x):alphas = tf.get_variable('alpha', _x.get_shape()[-1],initializer=tf.constant_initializer(0.0),dtype=tf.float32)pos = tf.nn.relu(_x)neg = alphas * (_x - abs(_x)) * 0.5return pos + neg

方法二:

def prelu(_x, scope=None):"""parametric ReLU activation"""with tf.variable_scope(name_or_scope=scope, default_name="prelu"):_alpha = tf.get_variable("prelu", shape=_x.get_shape()[-1],dtype=_x.dtype, initializer=tf.constant_initializer(0.1))return tf.maximum(0.0, _x) + _alpha * tf.minimum(0.0, _x)

方法三:

import tensorflow as tfdef PReLU(_x, name=None):if name is None:name = "alpha"_alpha = tf.get_variable(name,shape=_x.get_shape(),initializer=tf.constant_initializer(0.0),dtype=_x.dtype)return tf.maximum(_alpha*_x, _x)

参考资料:

How to implement PReLU activation in Tensorflow?

深度学习——PReLU激活

Tensorflow中PRelu实现细节相关推荐

  1. 在TensorFlow中对比两大生成模型:VAE与GAN(附测试代码)

    来源:机器之心 本文长度为3071字,建议阅读6分钟 本文在 MNIST 上对VAE和GAN这两类生成模型的性能进行了对比测试. 项目链接:https://github.com/kvmanohar22 ...

  2. Tensorflow中实现leakyRelu

    ReLU.LeakyReLU ReLU作为激活函数被广泛应用于各种深度神经网络中.在这篇博客中,我主要记录一下它和它的变种在caffe中的实现.  先看下来自wikipedia的一张示意图,图中蓝色的 ...

  3. TensorFlow中RNN实现的正确打开方式

    上周写的文章<完全图解RNN.RNN变体.Seq2Seq.Attention机制>介绍了一下RNN的几种结构,今天就来聊一聊如何在TensorFlow中实现这些结构,这篇文章的主要内容为: ...

  4. TensorFlow 中文文档 介绍

    介绍 本章的目的是让你了解和运行 TensorFlow 在开始之前, 先看一段使用 Python API 撰写的 TensorFlow 示例代码, 对将要学习的内容有初步的印象. 这段很短的 Pyth ...

  5. Python 3深度置信网络(DBN)在Tensorflow中的实现MNIST手写数字识别

    任何程序错误,以及技术疑问或需要解答的,请扫码添加作者VX:1755337994 使用DBN识别手写体 传统的多层感知机或者神经网络的一个问题: 反向传播可能总是导致局部最小值. 当误差表面(erro ...

  6. TensorFlow中的设备管理——Device的创建与注册机制

    背景 [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 作为一款优秀的异构深度学习算法框架,TensorFlow可以在多种设备上运行算 ...

  7. TensorFlow中RNN实现的正确打开方式(转)

    上周写的文章<完全图解RNN.RNN变体.Seq2Seq.Attention机制>介绍了一下RNN的几种结构,今天就来聊一聊如何在TensorFlow中实现这些结构,这篇文章的主要内容为: ...

  8. 深度学习PyTorch,TensorFlow中GPU利用率较低,使用率周期性变化的问题

    在用tensorflow训练神经网络时,发现训练迭代的速度时而快时而慢,监督的GPU使用率也是周期性变化,通过了解,发现原因是: GPU在等待CPU读取,预处理,并传输数据过来,因此要提高GPU的使用 ...

  9. Tensorflow中的各种梯度处理gradient

    最近其实一直想自己手动创建op,这样的话好像得懂tensorflow自定义api/op的规则,设计前向与反向,注册命名,注意端口以及文件组织,最后可能还要需要重新编译才能使用.这一部分其实记得tens ...

  10. 在TensorFlow中使用深度学习GANs处理图像

    设计师和摄影师用内容自动填补来补充图像中不想要的或缺失的部分.与之相似的技术还有图像完善和修复.实现内容自动填补,图像完善和修复的方法有很多.本文介绍的是 Raymond Yeh 和 Chen Che ...

最新文章

  1. python rank_PageRank算法原理与Python实现
  2. Elasticsearch-Jest 配置ES集群源码解读
  3. 第四范式携手工银科技 首批入驻雄安人工智能算法开放平台
  4. 【SLAM】安装 g2o_viewer
  5. activiti-explorer 启动报错 Error creating bean with name 'demoDataConfiguration'
  6. 95-40-050-java.util.concurrent-CopyOnWriteArraySet
  7. bert模型可以做文本主题识别吗_BERT如何融合主题模型-ACL2020
  8. 2引擎帮助文档_ANSA快速入门指南中文帮助文档浅析(上)
  9. 改用MyAnalyzer的KMeans聚类算法
  10. 【SQL】数值型函数
  11. 从设计模式到恋爱宝典,程序员们的福利来了
  12. JupyterHub与OpenLDAP集成
  13. NC6 UAP流程平台适配 类 nc.itf.scmpub.reference.uap.pf.PfServiceScmUtil
  14. 2 errors and 0 warnings potentially fixable with the `--fix` option,vue-cli3中eslint详解(转载)
  15. 淘宝打标API,旺旺打标签接口文档
  16. PLC无线通讯方案,支持西门子,三菱,欧姆龙,台达等各品牌PLC
  17. 微信小程序收藏按钮五角星星图标动画效果实现
  18. 计算机应用基础试题模拟题,网络教育统考《计算机应用基础》模拟试题答案
  19. 拓嘉辰丰:拼多多详情图制作方法
  20. 6-1健壮性与正确性

热门文章

  1. matlab2017安装完提示编译器,matlab2017a/b 编译器设置之无语神坑
  2. App测试实战:测试内容、测试工具、测试效果
  3. C++ 调用 SWMM模型.swmm5.dll
  4. 微信小程序-实现保存图片功能的3种方式
  5. html上下表格合并单元格,html表格合并单元格的方法_WEB前端开发
  6. 使用nmake编译Gdal源代码(Win10, VS2022)
  7. json转Map泛型Map<String,T>,json转集合Map泛型List<Map<String,T>>工具类
  8. 3dmaxvray的使用方法有哪些?
  9. C#引用AForge调取系统摄像头完成的驿站底单拍照系统
  10. 如何将heic格式批量转化jpg