Я пишу код о пользовательской функции потерь и пользовательской функции метрик в Keras.Теперь это неправильно с кодом.
Я не знаю, какие значения должны возвращать эти пользовательские функции, скаляр или тензор, размер которого равен 'batch_size'?Я попробовал все из них, удивительно, что они все работают, в то время как результаты отличаются.
Так что я хочу знать, какой из них является правильным.Каков вычислительный механизм «потерь» и «метрик», когда он завершает эпоху обучения?
Формы y_true
и y_predict
имеют вид (batch_size, 1)
def loss_scalar (y_true, y_pred):
main_loss=K.sum(K.reshape((1+0.2*(K.abs((5-y_true)-5/2)))*K.square(y_true-y_pred),shape=(-1,)))
def loss_tensor (y_true,y_pred):
main_loss=(K.reshape((1+0.2*(K.abs((5-y_true)-5/2)))*K.square(y_true-y_pred),shape=(-1,))
def mae_tensor (y_true, y_pred):
return (K.mean(K.abs(y_true-y_pred),axis=-1))
def mae_scalar (y_true, y_pred):
return K.sum(K.mean(K.abs(y_true-y_pred),axis=-1))