0

我的 CNN 中的活动函数具有以下形式:

abs(X)< tou  f = 1.716tanh(0.667x)
x >= tou     f = 1.716[tanh(2tou/3)+tanh'(2tou/3)(x-tou)]
x <= -tou    f = 1.716[tanh(-2tou/3)+tanh'(-2tou/3)(x+tou)]

tou是一个常数。

因此,在 TensorFlow 中可以创建自己的激活函数。我不想用 C++ 编写它并重新编译整个 TensorFlow。

如何使用TensorFlow中可用的功能来实现它?

4

1 回答 1

0

在 tensorflow 中,如果它包含已存在的操作,则很容易编写自己的激活函数,对于您的情况,您可以使用tf.case

f = tf.case({tf.less(tf.abs(x), tou): lambda: 7.716 * tf.tanh(0.667 * x),
         tf.greater_equal(x, tou): lambda: 1.716 * tf.tanh(2 * tou / 3) + 1.716 * tf.tanh(2 * tou / 3) * (x - tou)},
        default=lambda: 1.716 * tf.tanh(-2 * tou / 3) + 1.716 * tf.tanh(-2 * tou / 3) * (x + tou), exclusive=True)
于 2017-08-19T10:33:45.840 回答