实现自定义硬 sigmoid 函数

数据挖掘 神经网络 喀拉斯 张量流 激活函数
2022-03-06 23:57:31

我需要实现一个类似于 Keras 的“hard-sigmoid”的激活函数,只是针对不同的极限值:

  • 0 如果 x < 0
  • 1 如果 x > 1
  • x 如果 0 <= x <= 1

如何使用 tensorflow 后端 Keras 实现它?

1个回答

基于这篇文章, Keras 中的硬 sigmoid实现为 max(0, min(1, x*0.2 + 0.5)). 要获得您喜欢的图形,您必须调整移位斜率参数,即在您的情况下将它们排除在外:

max(0,min(1,x))

这将生成以下图表:

硬乙状结肠

对于 Keras 的 TensorFlow 后端,您可以在此处找到实现。对于您的情况,这将是相应更改的 "hard-sigmoid"

zero = _to_tensor(0., x.dtype.base_dtype)
one = _to_tensor(1., x.dtype.base_dtype)
x = tf.clip_by_value(x, zero, one)
return x