激活函数可以通过 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'))
celu
函数keras.activations.celu(x, alpha=1.0)
连续可微指数线性单元。
CeLU 激活函数定义为
celu(x) = alpha * (exp(x / alpha) - 1) 如果 x < 0
,celu(x) = x 如果 x >= 0
。
其中 alpha
是一个控制激活函数形状的缩放参数。
参数
1.0
。参考文献
elu
函数keras.activations.elu(x, alpha=1.0)
指数线性单元。
指数线性单元 (ELU),其中 alpha > 0
定义为
x
如果 x > 0
exp(x) - 1
如果 x < 0
ELU 具有负值,这会将激活函数的均值推向零。
更接近于零的平均激活值可以实现更快的学习,因为它们使梯度更接近自然梯度。当参数变小时,ELU 会饱和到一个负值。饱和意味着导数很小,这会减少变异以及传播到下一层的信息。
参数
参考文献
exponential
函数keras.activations.exponential(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 中那样根据输入的符号对其进行门控。
参数
bool
值,是否启用近似。参考文献
glu
函数keras.activations.glu(x, axis=-1)
门控线性单元 (GLU) 激活函数。
GLU 激活函数定义为
glu(x) = a * sigmoid(b)
,
其中 x
沿给定轴被拆分为两个相等的部分 a
和 b
。
参数
-1
。参考文献
hard_shrink
函数keras.activations.hard_shrink(x, threshold=0.5)
硬收缩激活函数。
它定义为
hard_shrink(x) = x
如果 |x| > threshold
,否则 hard_shrink(x) = 0
。
参数
hard_sigmoid
函数keras.activations.hard_sigmoid(x)
硬 sigmoid 激活函数。
硬 sigmoid 激活函数定义为
0
如果 if x <= -3
1
如果 x >= 3
(x/6) + 0.5
如果 -3 < x < 3
它是 sigmoid 激活函数的更快的分段线性近似。
参数
参考文献
hard_silu
函数keras.activations.hard_silu(x)
硬 SiLU 激活函数,也称为 Hard Swish。
它定义为
0
如果 if x < -3
x
如果 x > 3
x * (x + 3) / 6
如果 -3 <= x <= 3
它是 silu 激活函数的更快的分段线性近似。
参数
参考文献
hard_tanh
函数keras.activations.hard_tanh(x)
HardTanh 激活函数。
它定义为:hard_tanh(x) = -1 如果 x < -1
,hard_tanh(x) = x 如果 -1 <= x <= 1
,hard_tanh(x) = 1 如果 x > 1
。
参数
leaky_relu
函数keras.activations.leaky_relu(x, negative_slope=0.2)
Leaky relu 激活函数。
参数
float
值,用于控制低于阈值的值的斜率。linear
函数keras.activations.linear(x)
线性激活函数(直通)。
“线性”激活是一个恒等函数:它返回未修改的输入。
参数
log_sigmoid
函数keras.activations.log_sigmoid(x)
sigmoid 激活函数的对数。
它定义为 f(x) = log(1 / (1 + exp(-x)))
。
参数
log_softmax
函数keras.activations.log_softmax(x, axis=-1)
Log-Softmax 激活函数。
每个输入向量都是独立处理的。axis
参数设置函数沿其应用的输入的轴。
参数
mish
函数keras.activations.mish(x)
Mish 激活函数。
它定义为
mish(x) = x * tanh(softplus(x))
其中 softplus
定义为
softplus(x) = log(exp(x) + 1)
参数
参考文献
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.]
参数
float
值,用于控制低于阈值的值的斜率。float
值,用于设置饱和阈值(函数将返回的最大值)。float
值,给出激活函数的阈值,低于该阈值的值将被抑制或设置为零。返回值
与输入 x
具有相同形状和 dtype 的张量。
relu6
函数keras.activations.relu6(x)
Relu6 激活函数。
它是 ReLU 函数,但截断为最大值 6。
参数
selu
函数keras.activations.selu(x)
缩放指数线性单元 (SELU)。
缩放指数线性单元 (SELU) 激活函数定义为
scale * x
如果 x > 0
scale * alpha * (exp(x) - 1)
如果 x < 0
其中 alpha
和 scale
是预定义的常数(alpha=1.67326324
和 scale=1.05070098
)。
基本上,SELU 激活函数将 scale
(> 1) 与 keras.activations.elu
函数的输出相乘,以确保正输入的斜率大于 1。
选择 alpha
和 scale
的值是为了在两个连续层之间保留输入的均值和方差,只要权重被正确初始化(参见 keras.initializers.LecunNormal
初始化器),并且输入单元的数量“足够大”(有关更多信息,请参见参考论文)。
参数
注意
keras.initializers.LecunNormal
初始化器一起使用。keras.layers.AlphaDropout
(而不是常规 dropout)一起使用。参考文献
sigmoid
函数keras.activations.sigmoid(x)
Sigmoid 激活函数。
它定义为:sigmoid(x) = 1 / (1 + exp(-x))
。
对于小值 (<-5),sigmoid
返回接近于零的值,对于大值 (>5),函数的结果接近于 1。
Sigmoid 等效于 2 元素 softmax,其中第二个元素假定为零。sigmoid 函数始终返回介于 0 和 1 之间的值。
参数
silu
函数keras.activations.silu(x)
Swish(或 Silu)激活函数。
它定义为:swish(x) = x * sigmoid(x)
。
Swish(或 Silu)激活函数是一个平滑的、非单调的函数,它在上方无界,在下方有界。
参数
参考文献
softmax
函数keras.activations.softmax(x, axis=-1)
Softmax 将值向量转换为概率分布。
输出向量的元素在范围 [0, 1]
内,并且总和为 1。
每个输入向量都是独立处理的。axis
参数设置函数沿其应用的输入的轴。
Softmax 通常用作分类网络最后一层的激活函数,因为结果可以解释为概率分布。
每个向量 x 的 softmax 计算为 exp(x) / sum(exp(x))
。
输入值是结果概率的对数几率。
参数
soft_shrink
函数keras.activations.soft_shrink(x, threshold=0.5)
软收缩激活函数。
它定义为
soft_shrink(x) = x - threshold
如果 x > threshold
,soft_shrink(x) = x + threshold
如果 x < -threshold
,否则 soft_shrink(x) = 0
。
参数
softplus
函数keras.activations.softplus(x)
Softplus 激活函数。
它定义为:softplus(x) = log(exp(x) + 1)
。
参数
softsign
函数keras.activations.softsign(x)
Softsign 激活函数。
Softsign 定义为:softsign(x) = x / (abs(x) + 1)
。
参数
sparse_plus
函数keras.activations.sparse_plus(x)
SparsePlus 激活函数。
SparsePlus 定义为
sparse_plus(x) = 0
如果 x <= -1
。sparse_plus(x) = (1/4) * (x + 1)^2
如果 -1 < x < 1
。sparse_plus(x) = x
如果 x >= 1
。
参数
sparsemax
函数keras.activations.sparsemax(x, axis=-1)
Sparsemax 激活函数。
对于每个批次 i
和类别 j
,sparsemax 激活函数定义为
sparsemax(x)[i, j] = max(x[i, j] - τ(x[i, :]), 0)。
参数
int
,sparsemax 操作应用的轴。返回值
张量,sparsemax 变换的输出。具有与 x
相同的类型和形状。
参考文献
squareplus
函数keras.activations.squareplus(x, b=4)
Squareplus 激活函数。
Squareplus 激活函数定义为
f(x) = (x + sqrt(x^2 + b)) / 2
其中 b
是一个平滑参数。
参数
参考文献
tanh
函数keras.activations.tanh(x)
双曲正切激活函数。
它定义为:tanh(x) = sinh(x) / cosh(x)
,即 tanh(x) = ((exp(x) - exp(-x)) / (exp(x) + exp(-x)))
。
参数
tanh_shrink
函数keras.activations.tanh_shrink(x)
Tanh shrink 激活函数。
它定义为
f(x) = x - tanh(x)
.
参数
threshold
函数keras.activations.threshold(x, threshold, default_value)
阈值激活函数。
它定义为
threshold(x) = x
如果 x > threshold
,否则 threshold(x) = default_value
。
参数
x <= threshold
时要分配的值。您也可以使用可调用对象作为激活函数(在这种情况下,它应该接受一个张量并返回一个具有相同形状和 dtype 的张量)
model.add(layers.Dense(64, activation=keras.ops.tanh))
比简单函数更复杂的激活函数(例如,可学习的激活函数,它们维护状态)可以作为高级激活层使用。