Я пытаюсь реализовать функцию стоимости, которая наказывает прогнозируемые значения выше, чем фактические ( y_pred> y_true ).
Я пытаюсь скомпилировать сеть LSTM, используя следующую функцию стоимости :
#--- Building The RNN
regressor = Sequential()
regressor.add(LSTM(units=100,input_shape=(sequence_length + 1, nb_features)))
regressor.add(Dropout(0.2))
regressor.add(Dense(units = 1))
def custom_Loss(y_true,y_pred):
diff = y_pred - y_true
greater = K.greater(diff,0)
cost = K.switch(greater, K.mean((2*y_true - 2*y_pred)**2), K.mean((y_true - y_pred)**2))
return cost
regressor.compile(optimizer='adam',loss = custom_Loss)
Я получаю следующую ошибку:
File "<ipython-input-43-15de236685ab>", line 4, in custom_Loss
cost = K.switch(greater, K.mean((2*y_true - 2*y_pred)**2), K.mean((y_true - y_pred)**2))
File "C:\Users\MSI\.conda\envs\py37\lib\site-packages\keras\backend\tensorflow_backend.py", line 3073, in switch
'=' + str(expr_ndim))
ValueError: Rank of `condition` should be less than or equal to rank of `then_expression` and `else_expression`. ndim(condition)=2, ndim(then_expression)=0
Есть мысли о том, как решить эту проблему с K.switch? Любая помощь будет оценена.