Использование лямбда-функции - правильный подход к вашей проблеме.Однако имейте в виду, что лямбда-функция будет частью вашего вычислительного графа, и во время обучения необходимо рассчитывать градиенты для всего графа.
Например, вам не следует использовать функцию min()
, как вы, а использовать функции, которые являются частью Keras Backend .Замена всех операций их эквивалентными внутренними компонентами keras приводит к:
import keras.backend as K
def fun(x):
a = K.min(x)
y = K.round(K.dot(x, (K.pow(2, a))))
return y
Ваша окончательная модель (и все остальные слои Lambda
) должны содержать только собственные функции Keras, чтобы безопасно выполнять все вычисления во время обучения.