https://medium.com/@monocosmo77/working-with-contrastive-losses-part2-advanced-machine-learning-16793b52359e