几种激活函数的详解及代码实现:sigmoid()、softmax()、tanh()、relu()、leaky_relu()

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

1.sigmoid()函数

# Sigmoid函数常被用作神经网络的激活函数,将变量映射到0,1之间
# 除了输出层是一个二元分类问题外,基本不用Sigmoid函数
def sigmoid(x):
    y = 1/(1+np.exp(-x))
    return y

曲线绘制:

X = np.arange(-5, 5, 0.1)
y = sigmoid(X)
plt.plot(X, y)
plt.ylim(-0.1, 1.1)
plt.scatter(0,0.5,marker='*',c='r')
plt
### 不同激活函数的特点和应用场景 #### Sigmoid 函数特点及应用场合 Sigmoid 函数定义域为实数集,值域位于 (0, 1),具有平滑渐近线特性。然而,在神经网络训练过程中容易遇到饱和区间的梯度消失问题,即当输入过大或过小时,导数值趋近于零,阻碍误差逆向传递效率。尽管如此,对于二分类任务而言,Sigmoid 可作为输出层的理想选择之一[^1]。 #### Tanh 函数特点及应用场合 Tanh 函数同样适用于隐藏层节点,相较于 Sigmoid 而言,前者能够提供更加紧凑的数据映射范围 [-1, 1] 并且关于原点对称。这种性质使得模型参数初始化阶段更容易获得较小的标准差分布,从而加速收敛过程并提高泛化能力。不过需要注意的是,Tanh 同样存在类似于 Sigmoid 的梯度弥散现象[^3]。 #### ReLU 函数特点及应用场合 ReLU(Rectified Linear Unit)是一种简单有效的非线性变换方法,它只保留正半轴上的数据而将负半部分置零处理。相比于前两者,ReLU 显著减少了计算复杂度并且有效缓解了深层架构下的梯度消退难题;另外值得注意的地方在于,如果输入持续保持为负,则对应权重可能永远无法得到更新机会,形成所谓“死亡神经元”。因此实践中常采用 Leaky ReLU 或 Parametric ReLU 来改进这一缺陷[^2]。 #### Softmax 函数特点及应用场合 Softmax 函数主要用于解决多类别分类场景下概率估计需求。通过指数运算放大差异项之后再做标准化操作,最终得到一组满足加权求和等于一的概率型预测结果。此机制不仅赋予各个候选标签合理的置信水平评估依据,而且确保了整个系统的稳定性和鲁棒性。特别是在面对大规模离散空间探索时表现出色,成为现代深度学习框架不可或缺的重要组成部分。 ```python import numpy as np def sigmoid(x): return 1 / (1 + np.exp(-x)) def tanh(x): return np.tanh(x) def relu(x): return np.maximum(0, x) def softmax(x): exp_x = np.exp(x - np.max(x)) return exp_x / exp_x.sum(axis=0) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值