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'))

可用的激活函数

[source]

relu function

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具有相同形状和数据类型的张量.


[source]

sigmoid function

keras.activations.sigmoid(x)

Sigmoid激活函数.

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

对于小值(<-5), sigmoid返回一个接近零的值,对于大值(>5) 该函数的结果接近1.

Sigmoid等价于一个2元素的softmax,其中第二个元素 假设为零.Sigmoid函数总是返回一个介于 0和1之间的值.

参数: x: 输入张量.


[source]

softmax function

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

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

输出向量的元素在范围 [0, 1] 内并且总和为 1.

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

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

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

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

参数: x: 输入张量. axis: 整数,指定应用 softmax 的轴.


[source]

softplus function

keras.activations.softplus(x)

软加激活函数.

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

参数: x: 输入张量.


[source]

softsign function

keras.activations.softsign(x)

软符号激活函数.

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

参数: x: 输入张量.


[source]

tanh function

keras.activations.tanh(x)

双曲正切激活函数.

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

参数: x: 输入张量.


[source]

selu function

keras.activations.selu(x)

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

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

  • 如果 x > 0,则为 scale * x
  • 如果 x < 0,则为 scale * alpha * (exp(x) - 1)

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

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

alphascale 的值 选择得使输入的均值和方差在两层之间保持不变, 只要权重初始化正确(参见 keras.initializers.LecunNormal 初始化器) 并且输入单元的数量"足够大” (更多信息请参见参考论文).

参数: x: 输入张量.

备注:

参考文献:


[source]

elu function

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

指数线性单元.

指数线性单元(ELU)在 alpha > 0 时定义为:

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

ELU 具有负值,这使得激活的均值更接近于零.

更接近零的均值激活使得学习速度更快,因为它们使梯度更接近自然梯度. ELU 在参数变小时饱和到一个负值. 饱和意味着一个小的导数,这减少了变化和传递到下一层的信息.

参数: x: 输入张量.

参考:


[source]

exponential function

keras.activations.exponential(x)

指数激活函数.

参数: x: 输入张量.


[source]

leaky_relu function

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

泄漏的 relu 激活函数.

参数: x: 输入张量. negative_slope: 一个 float,控制低于阈值的值的斜率.


[source]

relu6 function

keras.activations.relu6(x)

ReLU6 激活函数.

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

参数: x: 输入张量.


[source]

silu function

keras.activations.silu(x)

Swish(或Silu)激活函数.

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

Swish(或Silu)激活函数是一个平滑的、 非单调函数,其上无界而下有界.

参数: x: 输入张量.

参考文献:


[source]

hard_silu function

keras.activations.hard_silu(x)

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

它定义为:

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

这是一种更快的、分段线性近似于silu激活的方法.

参数: x: 输入张量.

参考文献:


[source]

gelu function

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,是否启用近似.

参考文献:


[source]

hard_sigmoid function

keras.activations.hard_sigmoid(x)

硬Sigmoid激活函数.

硬Sigmoid激活定义为:

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

它是一个更快的、分段线性近似 的Sigmoid激活.

参数: x: 输入张量.

参考:


[source]

linear function

keras.activations.linear(x)

线性激活函数(直通).

"线性”激活是一个恒等函数: 它返回输入,不作修改.

参数: x: 输入张量.


[source]

mish function

keras.activations.mish(x)

Mish激活函数.

它的定义为:

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

其中softplus定义为:

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

参数: x: 输入张量.

参考文献:


[source]

log_softmax function

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

Log-Softmax激活函数.

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

参数: x: 输入张量. axis: 整数,沿该轴应用softmax.



创建自定义激活函数

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

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

关于“高级激活”层

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