一起创业网-为互联网创业者服务

激活函数程序怎么写

激活函数是神经网络中的重要组成部分,用于引入非线性因素,使得神经网络能够学习和模拟复杂的函数关系。以下是一些常见激活函数的定义和实现:

Sigmoid函数

数学表达式:`f(x) = 1 / (1 + e^(-x))`

特点:输出值域在[0, 1]之间,连续且可微,但容易导致梯度消失问题。

Tanh函数

数学表达式:`f(x) = (e^x - e^(-x)) / (e^x + e^(-x))`

特点:输出值域在[-1, 1]之间,零中心性较好,但同样存在梯度消失问题。

ReLU函数

数学表达式:`f(x) = max(0, x)`

特点:计算简单,能缓解梯度消失问题,但在负值区域梯度为0,可能导致“死亡ReLU”现象。

Leaky ReLU

数学表达式:`f(x) = max(alpha * x, x)`,其中`alpha`是泄漏系数(通常取0.01)

特点:是ReLU的改进版,允许负值区域有非零梯度,减少了“死亡ReLU”的概率。

ELU函数

数学表达式:`f(x) = x * sigmoid(x)`

特点:在负值区域有平滑的曲线,能缓解梯度消失问题,但计算相对复杂。

Swish函数

数学表达式:`f(x) = x * sigmoid(x)`,但使用自我激活方式

特点:无参数,计算简单,性能优于ReLU。

Softmax函数

数学表达式:`f(x_i) = e^(x_i) / sum(e^(x_j))`,用于多分类问题

特点:输出值域在[0, 1]之间,且所有输出值之和为1,适合作为分类问题的最后一层。

Softplus函数

数学表达式:`f(x) = log(1 + e^x)`

特点:平滑的激活函数,计算简单,能缓解梯度消失问题。

```python

import numpy as np

def relu(x):

return np.maximum(0, x)

示例输入

inputs = np.array([-10, 0, 10, 20])

outputs = relu(inputs)

print(outputs)

```

这个示例展示了如何实现ReLU激活函数,并应用于一组输入数据。你可以根据需要修改或扩展这个示例,实现其他激活函数。