Как сделать кусочную функцию активации с Python в TensorFlow?
Активная функция в моем 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, для ее достижения?
1 ответ
В tenorflow легко написать свою собственную функцию активации, если она включает уже существующие операции, для вашего случая вы можете использовать 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)