#tensorflow #machine-learning #keras #neural-network
#tensorflow #машинное обучение #keras #нейронная сеть
Вопрос:
Я пытаюсь определить свою собственную функцию затрат в Keras, работающую поверх Tensorflow. Имея y_true = [a0, a1, a2, a3, ..., an]
и y_pred = [b0, b1, b2, b3, ..., bn]
как основную истину и прогнозы, соответственно, я хочу определить функцию затрат как: cost = a0*b0 - a1*b1 a2*b2 - a3*b3 ...
.
Короче говоря, я хочу определить что-то вроде этого:
def my_cost(y_true, y_pred):
return tf.math.multiply(y_true, y_pred)
но каждый второй элемент должен быть отрицаемым. У вас есть какие-либо идеи?
Ответ №1:
Я ожидаю cost_function
, что сработает следующее; по сути, мы делаем трюк и выбираем нечетные и четные индексы; мы умножаем только y_true
y_pred
аналоги и с учетом их странности.
Затем мы используем tf.math.reduce_sum()
, чтобы фактически вычислить сумму стоимости; вы также можете использовать tf.math.subtract(first_sum,second_sum)
, но для простоты я сохранил « -
.
def my_cost(y_true, y_pred):
y_true_even = y_true[::2]
y_true_odd = y_true[1::2]
y_pred_even = y_pred[::2]
y_pred_odd = y_pred[1::2]
result = tf.math.reduce_sum(tf.math.multiply(y_true_even,y_pred_even)) - tf.math.reduce_sum(tf.math.multiply(y_true_odd,y_pred_odd))
return result