Слой Keras для изменения знака входного тензора только для определенных элементов

Вы должны использовать декоратор 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)]

1
задан Riccardo Di Sipio 16 January 2019 в 15:05
поделиться

1 ответ

Импорт бэкэнда (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.])
0
ответ дан Filipe Aleixo 16 January 2019 в 15:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: