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()

原文地址:https://www.cnblogs.com/pzf9266/p/8978551.html