Keras 3 API 文档 / 层 API / 层激活函数

层激活函数

激活的使用

激活可以通过 Activation 层或所有前向层支持的 activation 参数使用

model.add(layers.Dense(64, activation=activations.relu))

这等效于

from keras import layers
from keras import activations

model.add(layers.Dense(64))
model.add(layers.Activation(activations.relu))

所有内置激活也可以通过其字符串标识符传递

model.add(layers.Dense(64, activation='relu'))

可用激活

[来源]

relu 函数

keras.activations.relu(x, negative_slope=0.0, max_value=None, threshold=0.0)

应用修正线性单元激活函数。

使用默认值,这将返回标准 ReLU 激活:max(x, 0),0 和输入张量的逐元素最大值。

修改默认参数允许您使用非零阈值,更改激活的最大值,以及对低于阈值的输入使用非零倍数。

示例

>>> x = [-10, -5, 0.0, 5, 10]
>>> keras.activations.relu(x)
[ 0.,  0.,  0.,  5., 10.]
>>> keras.activations.relu(x, negative_slope=0.5)
[-5. , -2.5,  0. ,  5. , 10. ]
>>> keras.activations.relu(x, max_value=5.)
[0., 0., 0., 5., 5.]
>>> keras.activations.relu(x, threshold=5.)
[-0., -0.,  0.,  0., 10.]

参数

  • x:输入张量。
  • negative_slope:一个 float,用于控制低于阈值的斜率。
  • max_value:一个 float,用于设置饱和阈值(函数将返回的最大值)。
  • threshold:一个 float,给出激活函数的阈值,低于该阈值的将被抑制或设置为零。

返回值

一个形状和数据类型与输入 x 相同的张量。


[来源]

sigmoid 函数

keras.activations.sigmoid(x)

Sigmoid 激活函数。

它定义为:sigmoid(x) = 1 / (1 + exp(-x))

对于较小的值 (<-5),sigmoid 返回接近零的值,而对于较大的值 (>5),函数的结果接近 1。

Sigmoid 等同于 2 元素 softmax,其中第二个元素被假定为零。Sigmoid 函数始终返回 0 到 1 之间的值。

参数

  • x:输入张量。

[来源]

softmax 函数

keras.activations.softmax(x, axis=-1)

Softmax 将一个值向量转换为概率分布。

输出向量中的元素在范围 [0, 1] 内且加起来为 1。

每个输入向量独立处理。axis 参数设置对输入的哪个轴应用函数。

Softmax 通常用作分类网络最后一层的激活,因为结果可以解释为概率分布。

每个向量 x 的 softmax 计算为 exp(x) / sum(exp(x))

输入值是结果概率的对数几率。

参数

  • x:输入张量。
  • axis:整数,应用 softmax 的轴。

[来源]

softplus 函数

keras.activations.softplus(x)

Softplus 激活函数。

它定义为:softplus(x) = log(exp(x) + 1)

参数

  • x:输入张量。

[来源]

softsign 函数

keras.activations.softsign(x)

Softsign 激活函数。

Softsign 定义为:softsign(x) = x / (abs(x) + 1)

参数

  • x:输入张量。

[来源]

tanh 函数

keras.activations.tanh(x)

双曲正切激活函数。

它定义为:tanh(x) = sinh(x) / cosh(x),即 tanh(x) = ((exp(x) - exp(-x)) / (exp(x) + exp(-x)))

参数

  • x:输入张量。

[来源]

selu 函数

keras.activations.selu(x)

缩放指数线性单元 (SELU)。

缩放指数线性单元 (SELU) 激活函数定义为

  • scale * x if x > 0
  • scale * alpha * (exp(x) - 1) if x < 0

其中 alphascale 是预定义常数 (alpha=1.67326324scale=1.05070098)。

基本上,SELU 激活函数将 scale (> 1) 乘以 keras.activations.elu 函数的输出,以确保对于正输入斜率大于 1。

alphascale 的值被选择,以便只要权重被正确初始化(参见 keras.initializers.LecunNormal 初始化器)并且输入单元的数量“足够大”(参见参考论文了解更多信息),两个连续层之间的输入的均值和方差就会被保留。

参数

  • x:输入张量。

备注

参考


[来源]

elu 函数

keras.activations.elu(x, alpha=1.0)

指数线性单元。

alpha > 0 的指数线性单元 (ELU) 定义为

  • x if x > 0
  • alpha * exp(x) - 1 if x < 0

ELU 有负值,这将激活的均值推向更接近零。

更接近零的平均激活可以使学习更快,因为它们使梯度更接近自然梯度。当自变量变小时,ELU 会饱和到一个负值。饱和意味着导数很小,这会减少传递到下一层的变异量和信息。

参数

  • x:输入张量。

参考


[来源]

exponential 函数

keras.activations.exponential(x)

指数激活函数。

参数

  • x:输入张量。

[来源]

leaky_relu 函数

keras.activations.leaky_relu(x, negative_slope=0.2)

Leaky relu 激活函数。

参数

  • x:输入张量。
  • negative_slope:一个 float,用于控制低于阈值的斜率。

[来源]

relu6 函数

keras.activations.relu6(x)

Relu6 激活函数。

它是 ReLU 函数,但截断到最大值为 6。

参数

  • x:输入张量。

[来源]

silu 函数

keras.activations.silu(x)

Swish (或 Silu) 激活函数。

它定义为:swish(x) = x * sigmoid(x)

Swish (或 Silu) 激活函数是一个光滑的、非单调的函数,它在上方无界,在下方有界。

参数

  • x:输入张量。

参考


[来源]

hard_silu 函数

keras.activations.hard_silu(x)

硬 SiLU 激活函数,也称为硬 Swish。

它定义为

  • 0 if if x < -3
  • x if x > 3
  • x * (x + 3) / 6 if -3 <= x <= 3

它是 silu 激活函数的更快、分段线性近似。

参数

  • x:输入张量。

参考


[来源]

gelu 函数

keras.activations.gelu(x, approximate=False)

高斯误差线性单元 (GELU) 激活函数。

高斯误差线性单元 (GELU) 定义为

gelu(x) = x * P(X <= x),其中 P(X) ~ N(0, 1),即 gelu(x) = 0.5 * x * (1 + erf(x / sqrt(2)))

GELU 通过其值对输入进行加权,而不是像 ReLU 那样通过其符号对输入进行门控。

参数

  • x:输入张量。
  • approximate:一个 bool,是否启用近似。

参考


[来源]

hard_sigmoid 函数

keras.activations.hard_sigmoid(x)

硬 sigmoid 激活函数。

硬 sigmoid 激活定义为

  • 0 if if x <= -3
  • 1 if x >= 3
  • (x/6) + 0.5 if -3 < x < 3

它是 sigmoid 激活函数的更快、分段线性近似。

参数

  • x:输入张量。

参考


[来源]

linear 函数

keras.activations.linear(x)

线性激活函数(直通)。

“线性”激活是一个恒等函数:它返回未修改的输入。

参数

  • x:输入张量。

[来源]

mish 函数

keras.activations.mish(x)

Mish 激活函数。

它定义为

mish(x) = x * tanh(softplus(x))

其中 softplus 定义为

softplus(x) = log(exp(x) + 1)

参数

  • x:输入张量。

参考


[来源]

log_softmax 函数

keras.activations.log_softmax(x, axis=-1)

对数 Softmax 激活函数。

每个输入向量独立处理。axis 参数设置对输入的哪个轴应用函数。

参数

  • x:输入张量。
  • axis:整数,应用 softmax 的轴。


创建自定义激活

您也可以使用可调用对象作为激活(在这种情况下,它应该接收一个张量并返回一个形状和数据类型相同的张量)

model.add(layers.Dense(64, activation=keras.ops.tanh))

关于“高级激活”层

比简单函数更复杂的激活(例如,可学习的激活,它们维护状态)可作为 高级激活层 使用。