1 Sigmoid函数
1.1 定义
Sigmoid函数是一个在生物学中常见的S型的函数,也称为S型生长曲线。Sigmoid函数常被用作神经网络的阈值函数,将变量映射到0,1之间。
1.2公式
其对x的导数可以用自身表示:
1.2 python实现
import numpy as np import matplotlib.pyplot as plt def sigmoid(x): return 1.0/(1+np.exp(-x))
1.3 函数图像
import numpy as np import matplotlib.pyplot as plt def sigmoid(x): return 1.0/(1+np.exp(-x)) sigmoid_inputs = np.arange(-10,10) sigmoid_outputs=sigmoid(sigmoid(sigmoid_inputs)) print("Sigmoid Function Input :: {}".format(sigmoid_inputs)) print("Sigmoid Function Output :: {}".format(sigmoid_outputs)) plt.plot(sigmoid_inputs,sigmoid_outputs) plt.xlabel("Sigmoid Inputs") plt.ylabel("Sigmoid Outputs") plt.show()
2 Softmax函数
2.1 定义
在数学,尤其是概率论和相关领域中,Softmax函数,或称归一化指数函数
,是逻辑函数的一种推广。它能将一个含任意实数的K维的向量z的“压缩”到另一个K维实向量σ(z) 中,使得每一个元素的范围都在(0,1)之间,并且所有元素的和为1。
2.2公式
在多项逻辑回归和线性判别分析中,函数的输入是从K个不同的线性函数得到的结果,而样本向量 x 属于第 j 个分类的概率为:
这可以被视作K个线性函数x→xTw1,...,→xTwKSoftmax函数的复合(xTwxw)
2.3 python实现
import numpy as np def softmax(x): orig_shape=x.shape if len(x.shape)>1: #Matrix #shift max whithin each row constant_shift=np.max(x,axis=1).reshape(1,-1) x-=constant_shift x=np.exp(x) normlize=np.sum(x,axis=1).reshape(1,-1) x/=normlize else: #vector constant_shift=np.max(x) x-=constant_shift x=np.exp(x) normlize=np.sum(x) x/=normlize assert x.shape==orig_shape return x
2.4 函数图像
def softmax(x): orig_shape=x.shape if len(x.shape)>1: #Matrix #shift max whithin each row constant_shift=np.max(x,axis=1).reshape(1,-1) x-=constant_shift x=np.exp(x) normlize=np.sum(x,axis=1).reshape(1,-1) x/=normlize else: #vector constant_shift=np.max(x) x-=constant_shift x=np.exp(x) normlize=np.sum(x) x/=normlize assert x.shape==orig_shape return x softmax_inputs = np.arange(-10,10) softmax_outputs=softmax(softmax_inputs) print("Sigmoid Function Input :: {}".format(softmax_inputs)) print("Sigmoid Function Output :: {}".format(softmax_outputs)) # 画图像 plt.plot(softmax_inputs,softmax_outputs) plt.xlabel("Softmax Inputs") plt.ylabel("Softmax Outputs") plt.show()