I looked up a theano variant for keras.backend.switch, beause I did not want both operations to be executed and I found this :
Here it says that (lazy) ifelse executes only the branch corresponding to the condition and not both like switch. I tested it like this:
import theano
def function1():
print("function 1 is executed")
return a
def function2():
print("function 2 is executed")
return b
a = 2
b = 10
result = theano.ifelse.ifelse(T.gt(b,a), function1(), function2())
But when I run this both messages are printed which means that both branches are executed. This is confusing since the description of ifelse says that it should not. Am I missing something here?