keras ReLU 层的意外输出

Unexpected output for keras ReLU layer

在keras文档中,函数keras.activations.relu(x, alpha=0.0, max_value=None, threshold=0.0)定义为:

f(x) = max_value for x >= max_value,
f(x) = x for threshold <= x < max_value,
f(x) = alpha * (x - threshold) otherwise.

我用 alpha=0.01threshold=5.0max_value=100.0 做了一个小测试,对于 x=5.0,我得到的输出是 f(x)=0.0.

如果我没记错的话,因为x == threshold,我应该得到f(x)=x=5.0.

谁能解释一下?

谢谢,

源代码中的文档有误。 (你应该移动到 tf.keras 而不是 keras)。应该是,

f(x) = max_value for x >= max_value,
--> f(x) = x for threshold < x < max_value,
f(x) = alpha * (x - threshold) otherwise.

因此,当您的 x == threshold 时,它进入第三种情况,其中包含 0(即 x - threshold)。这就是为什么你得到 0.

如果您需要记录的行为 this line 需要更改为,

x = x * tf.cast(tf.greater_equal(x, threshold), floatx())