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:
print("function 1 is executed")
print("function 2 is executed")
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?