如何使用激活函数?
它的主要作用: 加入非线性
常用的激活函数:
1. sigmod函数
公式: 图形展示:
2.tanh函数
公式: 图形展示:
3.ReLU函数
公式: 图形展示:
4.ELU函数
公式: 图形展示:
ELU函数是针对ReLU函数的一个改进型,相比于ReLU函数,在输入为负数的情况下,是有一定的输出的,而且这部分输出还具有一定的抗干扰能力。
5.PReLU函数
公式: 图形展示:
PReLU也是针对ReLU的一个改进型,在负数区域内,PReLU有一个很小的斜率,这样也可以避免ReLU死掉的问题。
注:里面的参数α一般是取0~1之间的数,而且一般还是比较小的,如零点零几。当α=0.01时,我们叫PReLU为Leaky ReLU,算是PReLU的一种特殊情况吧。
6.softmax(x)函数
公式:
7.Scaled tanh([scaleIN, scaleOUT])函数
公式:
8.Leaky ReLU 函数
公式:
9.Vary Leaky ReLU 函数
公式:a = 1/3
10.Randomized ReLU 函数
公式:
11.Maxout 函数
公式:if a < 0, f(x) = max(x, ax)
12.softplus(x) 函数
公式:
13.linear(x) 函数
公式:
1 # -*- encoding:utf-8 -*- 2 3 import numpy as np 4 import matplotlib.pyplot as plt 5 import tensorflow as tf 6 7 # 创建输入数据 8 X = np.linspace(-7, 7, 180) #(-7, 7)之间的等间隔的180个点 9 10 #激活函数的原始实现 11 def sigmoid(inputs): 12 y = [1 / float(1 + np.exp(-x)) for x in inputs] 13 return y 14 15 def relu(inputs): 16 y = [x * (x > 0) for x in inputs] 17 return y 18 19 def tanh(inputs): 20 y = [(np.exp(x) - np.exp(-x)) / float(np.exp(x) + np.exp(-x)) for x in inputs] 21 return y 22 23 def softplus(inputs): 24 y = [np.log(1 + np.exp(x)) for x in inputs] 25 return y 26 27 #经过 TensorFlow 的激活函数处理的各个的 Y 值 28 y_sigmoid = tf.nn.sigmoid(X) 29 y_relu = tf.nn.relu(X) 30 y_tanh = tf.nn.tanh(X) 31 y_softplus= tf.nn.softplus(X) 32 33 # 创建会话 34 sess = tf.Session() 35 36 # 运行 37 y_sigmoid, y_relu, y_tanh, y_softplus = sess.run([y_sigmoid, y_relu, y_tanh, y_softplus]) 38 39 # 创建各个激活函数的图像 40 plt.subplot(221) 41 plt.plot(x, y_sigmoid, c="red", label="Sigmoid") 42 plt.ylim(-0.2, 1.2) #Y轴的取值范围极限 43 plt.legend(loc="best") #显示图像,放在最佳位置 44 45 plt.subplot(222) 46 plt.plot(x, y_relu, c="red", label="Relu") 47 plt.ylim(-1, 6) #Y轴的取值范围极限 48 plt.legend(loc="best") #显示图像,放在最佳位置 49 50 plt.subplot(223) 51 plt.plot(x, y_tanh, c="red", label="Tanh") 52 plt.ylim(-1.3, 1.3) #Y轴的取值范围极限 53 plt.legend(loc="best") #显示图像,放在最佳位置 54 55 plt.subplot(224) 56 plt.plot(x, y_softplus, c="red", label="Softplus") 57 plt.ylim(-1, 6) #Y轴的取值范围极限 58 plt.legend(loc="best") #显示图像,放在最佳位置 59 60 #显示图像 61 plt.show() 62 63 #关闭会话 64 sess.close()