1

在 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.01,我得到的threshold=5.0输出max_value=100.0是.x=5.0f(x)=0.0

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

谁能解释一下?

谢谢,

  • 朱利安
4

1 回答 1

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转到其中包含 a 的第三种情况0时(即x - threshold)。这就是你得到0.

如果您需要记录的行为,则此行​​需要更改为,

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

于 2020-01-07T04:09:07.007 回答