首页 > 代码库 > 深度学习的激励函数
深度学习的激励函数
1.sigmoid函数
S(x)=1/(1+exp(-x))
导数为:S(x)*(1-S(x))。
这个数值不会超过0.25.。通过sigmoid函数计算的函数值在0~1之间,如果神经网络的层数很多,如果每一层的激励函数采用sigmoid函数,就会产生梯度弥散的问题。因为利用BP函数更新参数的时候,会乘以它的导数,所以会一直减小。并且在比较大或者比较小的时候,会产生饱和效应,导致神经元类似与死亡。
2.tanh函数
导数:
tanh函数的值在-1~1之间。导数小于1.如果每一层用这个激励函数。会导致和sigmoid函数类似的情况。
3.elu函数
4.softplus函数
f(x)=ln(1+ex)
导数为:
f′(x)=ex1+ex=11+e?x。导数比较小
5.softsign函数
6.relu函数
f(x) = max(0, x)。这个函数经常用,可以解决梯度弥散问题,因为它的导师等于1或者就是0。
7. relu6函数
f(x) = max(0,6,x)。这个函数可以将激励函数的值数据位于0~6之间。
解释:这个函数的作用是计算激活函数relu6
,即min(max(features, 0), 6)
。
还有一些其他的函数变体,这里就不一一介绍。下面使用tensorflow画出的各种函数的图。
画图代码:
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt x = np.linspace(-10,10,100) 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) y6 = tf.nn.relu(x) y7 = 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‘) plt.show()
参考:http://m.blog.csdn.net/UESTC_C2_403/article/details/73431428
深度学习的激励函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。