zoukankan      html  css  js  c++  java
  • tensorflow 激活函数图形显示

    import tensorflow as tf
    import numpy as np
    import matplotlib.pyplot as plt

    x = np.linspace(-10,10,100)

    """

    激活函数的作用是解决非线性问题,魔方人脑神经元的两种状态,既激活态和抑制太,

    通过激活函数,将部分数据转换为抑制状态

    """

    """
    优点:它输出映射在(0,1)内,单调连续,非常适合用作输出层,并且求导比较容易;
    缺点:具有软饱和性,一旦输入落入饱和区,一阶导数就变得接近于0,很容易产生梯度消失。
    饱和性:当|x|>c时,其中c为某常数,此时一阶导数等于0,通俗的说一阶导数就是上图中的斜率,函数越来越水平。
    """


    y1 = tf.nn.sigmoid(x)

    y2 = tf.nn.tanh(x)

    y3 = tf.nn.elu(x)

    y4 = tf.nn.softplus(x)
    y5 = tf.nn.softsign(x)

    """

    relu在x<0时是硬饱和。由于当x>0时一阶导数为1。所以,relu函数在x>0时可以保持梯度不衰减,
    从而缓解梯度消失问题,还可以更快的去收敛。但是,随着训练的进行,
    部分输入会落到硬饱和区,导致对应的权重无法更新。我们称之为“神经元死亡”。"""


    y6 = tf.nn.relu(x)
    y7 = tf.nn.relu6(x)
    y8 = tf.nn.relu6(x)

    #不同激活函数显示
    with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    ax1 = plt.subplot2grid((4,2), (0,0))
    ax1.plot(x, sess.run(y1))
    ax1.set_title("sigmoid")

    ax2 = plt.subplot2grid((4,2), (0,1))
    ax2.plot(x, sess.run(y2))
    ax2.set_title("tanh")

    ax3 = plt.subplot2grid((4,2), (1,0))
    ax3.plot(x, sess.run(y3))
    ax3.set_title("elu")

    ax4 = plt.subplot2grid((4,2), (1,1))
    ax4.plot(x, sess.run(y4))
    ax4.set_title("softplus")

    ax5 = plt.subplot2grid((4,2), (2,0))
    ax5.plot(x, sess.run(y5))
    ax5.set_title("softsign")

    ax6 = plt.subplot2grid((4,2), (2,1))
    ax6.plot(x, sess.run(y6))
    ax6.set_title("relu")

    ax7 = plt.subplot2grid((4,2), (3,0))
    ax7.plot(x, sess.run(y7))
    ax7.set_title("relu6")

    ax8 = plt.subplot2grid((4,2), (3,1))
    ax8.plot(x, sess.run(y8))
    ax8.set_title("leakrelu")

    plt.show()

  • 相关阅读:
    关于NetBeans IDE的配置优化
    浅谈jquery关于select框的取值和赋值
    实验一 操作系统模仿cmd
    0320 《构建之法》前三章读后感
    0318 复利算法4.0
    0318 自动关机
    0317 复利计算总结
    0316 复利计算3.0
    0311 了解和熟悉操作系统实验
    0311 复利计算2.0
  • 原文地址:https://www.cnblogs.com/pzf9266/p/8978551.html
Copyright © 2011-2022 走看看