Path: blob/master/site/pt-br/addons/tutorials/losses_triplet.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
Perdas do TensorFlow Addons: TripletSemiHardLoss
Visão geral
Este notebook demonstra como usar a função TripletSemiHardLoss no TensorFlow Addons.
Recursos:
TripletLoss
Conforme apresentado pela primeira vez no artigo do FaceNet, a TripletLoss é uma função de perda que treina uma rede neural para incorporar de maneira estreita características da mesma classe enquanto maximiza a distância entre os embeddings de classes diferentes. Para isso, é escolhida uma âncora, além de uma amostra negativa e outra positiva.
A função de perda é descrita como uma função de distância euclidiana:
Onde A é a entrada âncora, P é a entrada de amostra positiva, N é a entrada de amostra negativa e alfa é uma margem usada para especificar quando um triplet fica muito "fácil" e você não deve mais ajustar os pesos a partir dele.
Aprendizado online SemiHard
Conforme mostrado no artigo, os melhores resultados são de triplets conhecidos como "Semi-Hard". Eles são definidos como triplets em que o negativo está mais longe da âncora que do positivo, mas ainda produz uma perda positiva. Para encontrar esses triplets de maneira eficiente, utilize o aprendizado online e só treine a partir de exemplos Semi-Hard em cada lote.
Configuração
Prepare os dados
Crie o modelo
Treine e avalie
Projetor de embeddings
Os arquivos de metadados e vetor podem ser carregados e visualizados aqui: https://projector.tensorflow.org/
Você pode ver os resultados dos nossos dados de teste incorporados quando visualizados com o UMAP: