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

Я хочу изменить двоичную потерю mbinary_crossentropy в кератах.

Например:

  def my_binary_crossentropy(self, y_true, y_pred):
    t_loss = K.max(y_pred, 0) - y_pred * y_true + K.log(1 + K.exp((-1) * K.abs(y_pred)))

    if t_loss > 0.9 :
        t_loss = 0
    elif t_loss < 0.1:
        t_loss = 0

    return t_loss

Но я получил ошибку:

Type Error : using a 'tf.Tensor as a python 'bool' is not allowed 

Поэтому я изменилкод:

  def my_binary_crossentropy(self,y_true, y_pred):

    t_loss = K.max(y_pred,0) - y_pred * y_true + K.log(1+K.exp((-1)*K.abs(y_pred)))

    print("before " ,t_loss)
    t_loss= K.switch(t_loss > 0.9,  K.zeros_like(y_true), t_loss)
    t_loss = K.switch(t_loss < 0.1,  K.zeros_like(y_true),t_loss)

    print("after",t_loss)
    return t_loss

Но мои потери и точность не уменьшаются

[enter code here][1]

Как применить мои потери в кератах?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...