максимизация двоичной кросс_энтропии в модели кераса - PullRequest
0 голосов
/ 09 апреля 2020

Я не знаю, как создать модель, максимизирующую двоичную потерю кросс-энтропии в модели кераса.

исследование:

1. https://intellipaat.com/community/17707/how-to-maximize-loss-function-in-keras, что сказал:

Просто умножьте потери на -1, чтобы максимизировать функцию потерь, пытаясь минимизировать ее:

new_loss = -loss

, но используя:

model.compile(loss=-1 * 'binary_crossentropy', optimizer=adam_optimizer())

привело к этой ошибке:

ValueError: The model cannot be compiled because it has no loss to optimize.
https://stats.stackexchange.com/questions/303229/why-does-keras-binary-crossentropy-loss-function-return-wrong-values

дал мне пользовательскую функцию, которая приближает потерю keras binary_crossentropy:

import keras.backend as K
def binary_crossentropy(y_true, y_pred):
    result = []
    for i in range(len(y_pred)):
        y_pred[i] = [max(min(x, 1 - K.epsilon()), K.epsilon()) for x in y_pred[i]]
        result.append(-np.mean([y_true[i][j] * math.log(y_pred[i][j]) + (1 - y_true[i][j]) * math.log(1 - y_pred[i][j]) for j in range(len(y_pred[i]))]))
    return np.mean(result)

, но я не могу использовать ее, так как она выдает ошибку:

len is not well defined for symbolic Tensors. (43_54/Sigmoid:0) Please call `x.shape` rather than `len(x)` for shape information.

при замене len на .shape[0]

я получаю еще одну ошибку:

__index__ returned non-int (type NoneType)

Я возился с синтаксисом несколькими способами, но, похоже, ничего не работает. есть идеи?

python 3,6

тензор потока 1,15

керас 2,3,1

1 Ответ

0 голосов
/ 09 апреля 2020

Вам просто нужно определить новый убыток на основе реализации keras:

def neg_binary_crossentropy(y_true, y_pred):
    return -1.0 * keras.losses.binary_crossentropy(y_true, y_pred)

, а затем использовать его в model.compile:

model.compile(loss=neg_binary_crossentropy, optimizer="adam")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...