시도 맞춤 손실 함수 (부드러운 L1 손실) keras에keras : 스무스 L1 손실
여기ValueError: Shape must be rank 0 but is rank 5 for 'cond/Switch' (op: 'Switch') with input shapes: [?,24,24,24,?], [?,24,24,24,?].
from keras import backend as K
import numpy as np
def smooth_L1_loss(y_true, y_pred):
THRESHOLD = K.variable(1.0)
mae = K.abs(y_true-y_pred)
flag = K.greater(mae, THRESHOLD)
loss = K.mean(K.switch(flag, (mae - 0.5), K.pow(mae, 2)), axis=-1)
return loss
감사합니다. 그러나 나는 여전히 오류가 있습니다 : ** ValueError : 도형은 계급 0이어야하지만 입력 도형으로 'cond/Switch'(op : 'Switch')에 대해 5 등급이어야합니다 : [?, 24,24,24 ,?], [ ?, 24,24,24,?] ** –
@ yuanzhou 즉, 네트워크 출력 또는 대상이 잘못되었거나 호환되지 않는 모양을 가지고 있음을 의미합니다. –
죄송합니다. 출력 및 타겟의 모양에 문제가 있다고 생각하지 않습니다. 다른 손실 기능을 사용하면 정상적으로 작동합니다. 오류는 사용자 지정된 smoothL1 만 사용하여 발생했습니다. –