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.01
、threshold=5.0
和 max_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())
在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.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())