import math import keras.backend as K def singleUnorderedLoss(yTrue,yPred): d1=sum(math.sqrt(min((yTrue[i*2]-yPred[j*2])**2+(yTrue[i*2+1]-yPred[j*2+1])**2 for j in range(4))) for i in range(4)) d2=sum(math.sqrt(min((yTrue[i*2]-yPred[j*2])**2+(yTrue[i*2+1]-yPred[j*2+1])**2 for i in range(4))) for j in range(4)) return (d1+d2)/2 def averageDistance(yTrue,yPred): squares=K.square(yTrue-yPred) distances=K.sqrt(K.sum(squares,-1)) return K.mean(distances,-1)