激活函数在神经网络中具有重要的作用,最主要的是给网络添加了更多的非线性。
1. ReLU函数
Relu函数的作用是求最大值,其公式为:
在实数定义域内连续,但在0处不可微,但在实际应用中如果碰到0处求导的情况,默认直接让其导数等于0,这样就解决了0处不可导的问题。
ReLU用于激活函数的优点是计算导数简单,如果X大于0,导数为1,如果X小于0,导数为0。
tf.keras.activations.relu(x, alpha=0.0, max_value=None, threshold=0)
示例:
>>> foo = tf.constant([-10, -5, 0.0, 5, 10], dtype = tf.float32)
>>> tf.keras.activations.relu(foo).numpy()
array([ 0., 0., 0., 5., 10.], dtype=float32)
>>> tf.keras.activations.relu(foo, alpha=0.5).numpy()
array([-5. , -2.5, 0. , 5. , 10. ], dtype=float32)
>>> tf.keras.activations.relu(foo, max_value=5).numpy()
array([0., 0., 0., 5., 5.], dtype=float32)
>>> tf.keras.activations.relu(foo, threshold=5).numpy()
array([-0., -0., 0., 0., 10.], dtype=float32)
参数:
- x:输入,张量或变量
- alpha:浮点数,值小于阈值时的斜率
- max_value:浮点数,饱和度阈值,函数可返回的最大值。也就是说输入大于该阈值时输出该值
- threshold:浮点数,小于该的输入返回0
返回值:
返回与输入相同shape的张量
2. Sigmoid函数
Sigmoid函数表达式为:
函数是S形曲线,在实数定义域内连续且可导,值域(0,1)。因为函数输出分布在0和1之间,所以输出可以被看作是概率。
当x<-5时,函数值接近于0;当x>5时,函数值接近于1。
Sigmoid函数也相当2个类别的Softmax函数。
tf.keras.activations.sigmoid(x)
示例:
>>> a = tf.constant([-20, -1.0, 0.0, 1.0, 20], dtype = tf.float32)
>>> b = tf.keras.activations.sigmoid(a)
>>> b.numpy()
array([2.0