Вы должны использовать декоратор memoize. Вот интересная ссылка .
Использование memoization из ссылки и вашего «кода»:
def memoize(f):
""" Memoization decorator for functions taking one or more arguments. """
class memodict(dict):
def __init__(self, f):
self.f = f
def __call__(self, *args):
return self[args]
def __missing__(self, key):
ret = self[key] = self.f(*key)
return ret
return memodict(f)
@memoize
def f(x):
# your code
[f(x) for x in l if f(x)]
Импорт бэкэнда (TensorFlow)
from keras import backend as K
Определение входного массива
val = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
Преобразование его в переменную
kvar = K.variable(value=val, dtype='float64', name='example_var')
Определение маски, которую вы хотите а также преобразовать его в переменную:
mask = np.ones([len(val)])
mask[[1,5,9]] = -1
mask = K.variable(value=mask, dtype='float64', name='mask')
Умножить маску на исходный вектор
result = val * mask
Оценить результат
K.eval(result)
> array([ 0., -1., 2., 3., 4., -5., 6., 7., 8., -9., 10.])