2017-08-19 2 views
0

Die aktive Funktion in meinem CNN hat die Form:Wie man eine stückweise Aktivierung mit Python in TensorFlow macht?

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 eine Konstante ist.

Also, in TensorFlow ist es möglich, Ihre eigene Aktivierungsfunktion zu machen. Ich möchte es nicht in C++ schreiben und den gesamten TensorFlow neu kompilieren.

Wie kann ich die in TensorFlow verfügbare Funktion verwenden, um dies zu erreichen?

+0

Die drei Bedingungen scheinen inkonsistent verwenden können. Was passiert zum Beispiel, wenn x == tou? –

+0

die 3. Bedingung ist falsch. Ich habe es wieder bearbeitet. Bitte versuchen Sie es. danke ~ –

Antwort

0

In tensorflow ist es einfach, Ihre eigene Aktivierungsfunktion zu schreiben, wenn es ist existierten bereits ops, für Ihren Fall, dass Sie 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) 
+0

die dritte Bedingung ist falsch. Ich habe es wieder bearbeitet. bitte guck dir das an. danke ~ –

+0

bearbeitet meine Antwort nach neuen Bedingungen. –

Verwandte Themen