【AI实战】快速掌握TensorFlow(三):激励函数
到现在我们已经了解了TensorFlow的特点和基本操作(见文章:快速掌握TensorFlow(一)),以及TensorFlow计算图、会话的操作(见文章:快速掌握TensorFlow(二)),接下来我们将继续学习掌握TensorFlow。
本文主要是学习掌握TensorFlow的激励函数。
1、什么是激励函数
激励函数是所有神经网络算法的必备神器,通过加入激励函数可实现张量计算的非线性化,从而提升神经网络模型的泛化能力。
直接构建神经网络的输入与输出是一个线性关系,如下图
通过在神经网络中加入非线性激励函数后,神经网络具有非线性处理的能力,能够实现对非线性数据的处理,如下图
通俗地讲,激励函数的作用就是将多个线性输入转换为非线性的关系。如果不使用激励函数,神经网络的每层都只是做线性变换,即使是多层输入叠加后也还是线性变换。通过使用激励函数引入非线性因素后,使神经网络的表示能力更强了。
常用的激励函数主要有:ReLU、ReLU6、sigmoid、tanh、softsign、ELU等。
如果想要更加详细地了解激励函数,请见文章:深度学习中常用的激励函数
2、怎样使用激励函数
在TensorFlow中使用激励函数非常方便,激励函数位于神经网络库中(tensorflow.nn),下面介绍使用方法。
(0)创建一个会话,调用默认计算图
import tensorflow as tf sess = tf.Session()
(1)ReLU函数
ReLU(Rectifier linear unit,整流线性单元)是神经网络中最常用的激励函数,函数如下:
在TensorFlow中的调用方法如下:
df=tf.nn.relu([-5., 0., 5., 10.]) print(sess.run(df))
输出结果为:
[0. 0. 5. 10.]
(2)ReLU6函数
引入ReLU6主要是为了抵消ReLU函数的线性增长部分,在ReLU的基础上再加上min,函数如下:
在TensorFlow中的调用方法如下:
df=tf.nn.relu6([-5., 0., 5., 10.]) print(sess.run(df))
输出结果为:
[0. 0. 5. 6.]
(3)Leaky ReLU函数
引入Leaky ReLU主要是为了避免梯度消失,当神经元处于非激活状态时,允许一个非0的梯度存在,这样不会出现梯度消失,收敛速度快。函数如下:
在TensorFlow中的调用方法如下:
df=tf.nn.leaky_relu([-3., 0., 5.]) print(sess.run(df))
输出结果为:
[-0.3 0. 5.]
(4)sigmoid函数
sigmoid函数是神经网络中最常用的激励函数,它也被称为逻辑函数,它在深度学习的训练过程中会导致梯度消失,因此在深度学习中不怎么使用。函数如下:
在TensorFlow中的调用方法如下:
df=tf.nn.sigmoid([-1., 0., 1.]) print(sess.run(df))
输出结果为:
[0.26894143 0.5 0.7310586]
(5)tanh函数
tanh函数即是双曲正切函数,tanh与sigmoid函数相似,但tanh的取值范围是0到1,sigmoid函数取值范围是-1到1。函数如下:
在TensorFlow中的调用方法如下:
df=tf.nn.tanh([-1., 0., 1.]) print(sess.run(df))
输出结果为:
[-0.76159418 0. 0.76159418]
(6)ELU函数
ELU在正值区间的值为x本身,而在负值区间,ELU在输入取较小值时具有软饱和的特性,提升了对噪声的鲁棒性,函数如下:
在TensorFlow中的调用方法如下:
df=tf.nn.elu([-1., 0., 1.]) print(sess.run(df))
输出结果为:
[-0.63212055 0. 1.]
(7)softsign函数
softsign函数是符号函数的连续估计,定义如下:
在TensorFlow中的调用方法如下:
df=tf.nn.softsign([-1., 0., 1.]) print(sess.run(df))
输出结果为:
[-0.5 0. 0.5]
(8)softplus函数
softplus是ReLU激励函数的平滑版,定义如下:
在TensorFlow中的调用方法如下:
df=tf.nn.softplus([-1., 0., 1.]) print(sess.run(df))
输出结果为:
[0.31326166 0.69314718 1.31326163]
至此,我们已经了解了激励函数的作用,以及常用的激励函数原理和在TensorFlow中调用的方法。
接下来的“快速掌握TensorFlow”系列文章,还会有更多讲解TensorFlow的精彩内容,敬请期待。
推荐相关阅读
- 【AI实战】快速掌握TensorFlow(一):基本操作
- 【AI实战】快速掌握TensorFlow(二):计算图、会话
- 【AI实战】快速掌握TensorFlow(三):激励函数
- 【AI实战】快速掌握TensorFlow(四):损失函数
- 【AI实战】搭建基础环境
- 【AI实战】训练第一个模型
- 【AI实战】编写人脸识别程序
- 【AI实战】动手训练目标检测模型(SSD篇)
- 【AI实战】动手训练目标检测模型(YOLO篇)
- 【精华整理】CNN进化史
- 大话卷积神经网络(CNN)
- 大话循环神经网络(RNN)
- 大话深度残差网络(DRN)
- 大话深度信念网络(DBN)
- 大话CNN经典模型:LeNet
- 大话CNN经典模型:AlexNet
- 大话CNN经典模型:VGGNet
- 大话CNN经典模型:GoogLeNet
- 大话目标检测经典模型:RCNN、Fast RCNN、Faster RCNN
- 大话目标检测经典模型:Mask R-CNN
- 27种深度学习经典模型
- 浅说“迁移学习”
- 什么是“强化学习”
- AlphaGo算法原理浅析
- 大数据究竟有多少个V
- Apache Hadoop 2.8 完全分布式集群搭建超详细教程
- Apache Hive 2.1.1 安装配置超详细教程
- Apache HBase 1.2.6 完全分布式集群搭建超详细教程
- 离线安装Cloudera Manager 5和CDH5(最新版5.13.0)超详细教程
- 全网最新猎豹网校-快速掌握Python项目实战
- [AI] TensorFlow原理与实战:1.1.Vision Models视觉模型—CNN(卷积神经网络)
- 从能做什么到如何去做,一文带你快速掌握Python编程基础与实战
- 快速上手|TensorFlow从入门到实战资料汇总
- 从入门到精通学全套AI 轻松掌握illustrator基础加实战技能视频课程-王诚-专题视频课程...
- 快速掌握Jmail使用方法
- Linux服务器应用实战——服务环境快速搭建
- tensorflow实战(黄文坚 唐源) 学习笔记5--InceptionV3
- 快速掌握vim基础
- 快速掌握activity的生命周期
- TensorFlow 实战之实现卷积神经网络
- Wireshark使用教程 (快速掌握重点)
- Python Flask 快速构建高性能大型web网站项目实战
- TensorFlow 实战之实现卷积神经网络的实例讲解
- 快速掌握小程序组件事件自定义参数的方法
- 《TensorFlow-实战Google深度学习框架》学习笔记 计算图、张量、会话
- 快速掌握一个关键按钮,迅速成为Excel达人!
- tensorflow google实战 学习笔记——TensorFlow入门(3)
- 深入掌握JMS(四):实战Queue
- TensorFlow实战——个性化推荐