Как изменить функцию потери кераса?
Я хочу изменить двоичные потери 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]
Как мне применить мою потерю в керасе?