Path: blob/master/site/es-419/addons/tutorials/losses_triplet.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
Pérdidas de componentes de TensorFlow: TripletSemiHardLoss
Descripción general
En estas notas se demuestra cómo usar la función TripletSemiHardLoss en complementos de TensorFlow.
Recursos:
FaceNet: A Unified Embedding for Face Recognition and Clustering (FaceNet: incorporaciones unificadas para reconocimiento facial y agrupación en clústeres)
TripletLoss
Tal como se presenta en la publicación sobre FaceNet, TripletLoss (la pérdida triplete) es una función de pérdida que entrena a una red neuronal para que incorpore cerca características de la misma clase y que, a la vez, maximice la distancia entre las incorporaciones de diferentes clases. Para lograrlo, se elige un anclaje junto con una muestra negativa y una positiva.
La función de pérdida se describe como función de distancia euclidiana:
Donde A es nuestra entrada de anclaje (anchor), P es la entrada de muestra positiva, N es la entrada de muestra negativa y alfa es algo cierto que se usa para especificar cuándo un triplete se ha vuelto demasiado "fácil" y ya no se desea ajustar los pesos con él.
Aprendizaje en línea SemiHard
Tal como se muestra en la publicación, los mejores resultados se obtienen de tripletes conocidos como "semiduros". Son aquellos que se los define como tripletes en los que el negativo está más lejos del anclaje que el positivo, pero que aún producen una pérdida positiva. Para hallar estos tripletes con eficiencia, se usa el aprendizaje en línea y solamente se entrena a partir de los ejemplos semiduros en cada lote.
Preparación
Preparación de los datos
Generación del modelo
Entrenamiento y evaluación
Proyector de incorporación
Los archivos de metadatos y del vector se pueden cargar y visualizar aquí: https://projector.tensorflow.org/
Los resultados de nuestra prueba de incorporación (embedding) se pueden ver con UMAP: