es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Distancia euclidiana en una red siamesa

Me encontré con un código de red siamesa en el que se calculaba la distancia euclidiana de la siguiente manera:

def euclidean_distance(vects):
  x, y = vects
  sum_square = K.sum(K.square(x - y), axis=1, keepdims=True)
  return K.sqrt(K.maximum(sum_square, K.epsilon()))

¿Por qué en este código tomamos el máximo entre sum_square y epsilon?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La razón por la que se toma el máximo de sum_square y epsilon en la función euclidean_distance es evitar la posibilidad de tomar la raíz cuadrada de valores negativos. La variable sum_square representa la suma de las distancias al cuadrado entre los dos vectores x e y. Sin embargo, debido a errores de redondeo u otros problemas numéricos, el valor de sum_square puede ser ligeramente negativo. Tomar la raíz cuadrada de un número negativo no es posible, por lo que en su lugar tomamos el máximo entre sum_square y un valor positivo muy pequeño llamado epsilon. Esto asegura que el resultado sea siempre un número real no negativo, lo cual es una métrica de distancia válida.

Comments are closed.