机器学习(六)Sigmoid函数和Softmax函数1 Sigmoid函数2 Softmax函数

  • 2026-06-29 16:54:51

1 Sigmoid函数1.1 定义Sigmoid函数是一个在生物学中常见的S型的函数,也称为S型生长曲线。Sigmoid函数常被用作神经网络的阈值函数,将变量映射到0,1之间。

1.2公式其对x的导数可以用自身表示:

1.2 python实现代码语言:javascript复制import numpy as np

import matplotlib.pyplot as plt

def sigmoid(x):

return 1.0/(1+np.exp(-x))1.3 函数图像代码语言:javascript复制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实现代码语言:javascript复制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 x2.4 函数图像代码语言:javascript复制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()推荐阅读Softmax 函数及其作用(含推导)DIFFERENCE BETWEEN SOFTMAX FUNCTION AND SIGMOID FUNCTION