Я пытаюсь реализовать следующую функцию в качестве пользовательской функции потерь для модели Keras с использованием бэкэнда тензорного потока. Однако я не могу найти способ получить доступ к выводу модели и изолировать ее значения, чтобы я мог использовать их при определении оценки функции. Мне также нужен был бы способ получить номер выборки, который используется тренингом при каждом запуске функции потерь, чтобы использовать массив Coords для получения фактической (широта, долгота) каждой выборки
def distance_error(y_actual, y_predicted):
R = 6378.1 #Radius of the Earth
brng_pred = y_predicted[1]*(math.pi/180) #Bearing is 90 degrees converted to radians.
d_pred = y_predicted[0] #Distance in km
lat1 = math.radians(Coord[i,0]) #Current lat point converted to radians
lon1 = math.radians(Coord[i,1]) #Current long point converted to radians
lat3 = math.asin( math.sin(lat1)*math.cos(d_pred/R) + math.cos(lat1)*math.sin(d_pred/R)*math.cos(brng_pred))
lon3 = lon1 + math.atan2(math.sin(brng_pred)*math.sin(d_pred/R)*math.cos(lat1), math.cos(d_pred/R)-math.sin(lat1)*math.sin(lat3))
true=(Coord[i+1,0],Coord[i+1,1])
mypred=(math.degrees(lat3),math.degrees(lon3))
testScore = geopy.distance.vincenty(true, mypred).km
return testScore
Is такая функция потери возможна? Я искал некоторое время и пытался, но не смог получить доступ к выходным значениям