Могу ли я использовать шаговую функцию как функцию потерь для обучения нейронной сети? - PullRequest
1 голос
/ 31 января 2020

В качестве заголовка,

Я пытаюсь построить модель для прогнозирования PM2.5,

Возможно использовать функцию потерь с градиентом достойного, например, mse, rmse, mae ... et c.

но когда я использую пользовательскую функцию потерь с функцией шага, мне кажется, что веса не обновлялись.

в последних слоях моей модели выводится прогноз pm2.5,

и я пытаюсь использовать функцию шага для расчета потерь

def custom_loss(y_true,y_pred):
  z_true = step_function(y_true)
  z_pred = step_function(y_pred)
  return K.abs(z_true -z_pred)

, а моя функция шага - попытка преобразовать PM2.5 в уровни AQI.

def step_function(x):
  step1 = ((K.tanh(x-15.45))+1)/2  # is means PM2.5 <15.45 return 0 >15.45 return 1 
  step2 = ((K.tanh(x-35.45))+1)/2  # is means PM2.5 <35.45 return 0 >35.45 return 1 
  return (step1+step2)  # if x(PM2.5) = 50 , will return 2

возможно, когда y_true и y_pred равны 0, а пошаговая функция возвращает 0, не может дифференцировать, поэтому встречающиеся веса не обновляются?

...