https://medium.com/@monocosmo77/working-with-contrastive-losses-part1-advanced-machine-learning-d14f9af90258