概述
将线性回归的 结果 作为 x,通过sigmoid函数计算,输出 概率值 y
注意:
在 神经网络中 很少用在中间层,一般用在 输出层,解决 二分类问题
sigmoid 函数
x就是 线性回归 的 结果
函数图像
特点
- x值接近0时,非常陡峭,y值变化非常大
- x值远离0时,越平缓,y值变化不大
- 输出值 在 0~1 之间
- 连续可导
作用
由于 输出值 在 0~1 之间,所以一般用在 输出层 ,解决 二分类 问题
缺点
- 计算量大,反向传播时,求导需要用除法
- 当x过大、过小时,函数值变化小,梯度容易消失,不利于 后向传播
实现
python方式
y=1/(1+math.e**-x)
numpy方式
y=1/(1+np.exp(-x))
tensorflow方式
y=tf.sigmoid(x)
详见:
https://www.malaoshi.top/show_1EF5DLAuBptO.html
sigmoid 导数
公式:f′(x)=s(x) * (1−s(x))
s(x) 是 sigmoid 函数
函数图像
实现sigmoid函数和导数
定义sigmoid函数及其导数
import math
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
def sigmoid(x):
return (1/(1+math.e**-x))
# 导数函数
def d_sigmoid(x):
return sigmoid(x)*(1-sigmoid(x))
生成数据
x_arr=np.linspace(-10,10,200)
y_arr=sigmoid(x_arr)
x_d_arr=np.linspace(-10,10,200)
y_d_arr=d_sigmoid(x_d_arr)
画出图像
plt.figure(figsize=(10,6))
plt.plot(x_arr,y_arr,label='sigmoid')
plt.plot(x_d_arr,y_d_arr,label='der sigmoid')
plt.grid(axis='both',alpha=0.5)
plt.legend(loc='upper left')
plt.show()
注意
作为激活函数时,可能会引发梯度消失
https://www.malaoshi.top/show_1EF5UETXH6tN.html


