Керас с бэкэндом Theano: пользовательская функция потерь - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь создать пользовательскую функцию потерь в Keras для однослойной задачи регрессии LSTM, которая вычисляет среднеквадратическую ошибку между только ненулевыми значениями в векторе метка / истинность и соответствующими значениями в предсказанном векторе.Я попытался сделать следующее

import theano.tensor as T
import keras.backend as K

def custom_loss_func(y_true, y_pred):

    #make the prediction vector zero where the label vector is zero
    y_pred = T.where(T.eq(y_true,0), 0, y_pred) 

    #get nonzero values
    nonzero_vals = T.flatnonzero(y_pred)

    #return mean squared error on only the nonzero values
    return K.sum(K.square(y_pred-y_true)) / K.shape(nonzero_vals)[0]

, что приводит к ошибке

"theano.gof.fg.MissingInputError: ввод 0 графика (индексы начинаются с 0), используетсядля вычисления Elemwise {neq, no_inplace} (/ masking_1_input, InplaceDimShuffle {x, x, x} .0), не было предоставлено и ему не было дано значение. Используйте флаг Theano exception_verbosity = 'high', для получения дополнительной информации об этой ошибке."

Это не похоже на работу, и я думаю, что это связано с фактором" формы "ненулевого вектора.Я не могу понять из документации Theano, как вписать значение формы в выражение.Любая помощь приветствуется, спасибо!

...