Проблема с переключателем Keras 'op при реализации функции стоимости - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь реализовать функцию стоимости, которая наказывает прогнозируемые значения выше, чем фактические ( 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? Любая помощь будет оценена.

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