Tensorflow入门(四)——激活函数

上一节
Tensorflow入门(三)——计算图、会话

下一节
Tensorflow入门(五)——损失函数

原文链接:https://my.oschina.net/u/876354/blog/1937296

本文在原文基础上进行细微的修改和完善。

1. 什么是激活函数

激活函数是所有神经网络算法的必备神器,通过加入激活函数可实现张量计算的非线性化,从而提升神经网络模型的泛化能力。
直接构建神经网络的输入与输出是一个线性关系,如下图
在这里插入图片描述
通过在神经网络中加入非线性激活函数后,神经网络具有非线性处理的能力,能够实现对非线性数据的处理,如下图
在这里插入图片描述
通俗地讲,激活函数的作用就是将多个线性输入转换为非线性的关系。
如果不使用激活函数,神经网络的每层都只是做线性变换,即使是多层输入叠加后也还是线性变换。
通过使用激活函数引入非线性因素后,使神经网络的表示能力更强了。
常用的激活函数主要有:ReLU、ReLU6、sigmoid、tanh、softsign、ELU等。

2. 怎样使用激活函数

在TensorFlow中使用激活函数非常方便,激活函数位于神经网络库中(tensorflow.nn),下面介绍使用方法。

  1. 创建一个会话,调用默认计算图

    import tensorflow as tf
    sess = tf.Session()
    
  2. ReLU函数

    ReLU(Rectifier linear unit,整流线性单元)是神经网络中最常用的激活函数,函数如下:
    在这里插入图片描述
    在TensorFlow中的调用方法如下:

    df = tf.nn.relu([-5., 0., 5., 10.])
    print(sess.run(df))
    

    输出结果为:
    [0. 0. 5. 10.]

  3. ReLU6函数

    引入ReLU6主要是为了抵消ReLU函数的线性增长部分,在ReLU的基础上再加上min,函数如下:
    在这里插入图片描述
    在TensorFlow中的调用方法如下:

    df = tf.nn.relu6([-5., 0., 5., 10.])
    print(sess.run(df))
    

    输出结果为:
    [0. 0. 5. 6.]

  4. Leaky ReLU函数

    引入Leaky ReLU主要是为了避免梯度消失,当神经元处于非激活状态时,允许一个非0的梯度存在,这样不会出现梯度消失,收敛速度快。函数如下:
    在这里插入图片描述
    在TensorFlow中的调用方法如下:

    df = tf.nn.leaky_relu([-3., 0., 5.])
    print(sess.run(df))
    

    输出结果为:

    [-0.6 0. 5. ]

  5. sigmoid函数

    sigmoid函数是神经网络中最常用的激活函数,它也被称为逻辑函数,它在深度学习的训练过程中会导致梯度消失,因此在深度学习中不怎么使用。函数如下:
    在这里插入图片描述
    在TensorFlow中的调用方法如下:

    df = tf.nn.sigmoid([-1., 0., 1.])
    print(sess.run(df))
    

    输出结果为:
    [0.26894143 0.5 0.7310586]

  6. 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]

  7. ELU函数

    ELU在正值区间的值为x本身,而在负值区间,ELU在输入取较小值时具有软饱和的特性,提升了对噪声的鲁棒性,函数如下:
    在这里插入图片描述
    在TensorFlow中的调用方法如下:

    df = tf.nn.elu([-1., 0., 1.])
    print(sess.run(df))
    

    输出结果为:
    [-0.63212055 0. 1.]

  8. softsign函数

    softsign函数是符号函数的连续估计,定义如下:
    f ( x ) = x ∣ x ∣ + 1 f(x)=\frac{x}{|x|+1} f(x)=x+1x
    在TensorFlow中的调用方法如下:

    df = tf.nn.softsign([-1., 0., 1.])
    print(sess.run(df))
    

    输出结果为:
    [-0.5 0. 0.5]

  9. softplus函数

    softplus是ReLU激活函数的平滑版,定义如下:
    f ( x ) = l o g ( e x + 1 ) f(x)=log(e^x+1) f(x)=log(ex+1)
    在TensorFlow中的调用方法如下:

    df = tf.nn.softplus([-1., 0., 1.])
    print(sess.run(df))
    

    输出结果为:
    [0.31326166 0.69314718 1.31326163]

至此,我们已经了解了激活函数的作用,以及常用的激活函数原理和在TensorFlow中调用的方法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值