Я пытаюсь создать сиамскую сеть с тройной потерей, и я использую пример github, чтобы помочь мне. Я новичок в этом, и мне сложно понять, как извлечь вложения из модели. Ниже представлена архитектура:
Код для извлечения вложений, который я нашел на нескольких страницах, следующий:
def triplet_loss(y_true, y_pred):
anchor, positive, negative = y_pred[:,:emb_size], y_pred[:,emb_size:2*emb_size], y_pred[:,2*emb_size:]
positive_dist = tf.reduce_mean(tf.square(anchor - positive), axis=1)
negative_dist = tf.reduce_mean(tf.square(anchor - negative), axis=1)
return tf.maximum(positive_dist - negative_dist + alpha, 0.)
Что меня смутило Мне трудно визуализировать матрицу, и я не понимаю, почему привязка y [:,: emb_size], положительная - y_pred [:, emb_size: 2 emb_size] и отрицательная y_pred [: , 2 emb_size:].
Полный код, если необходим дополнительный контекст: https://github.com/pranjalg2308/siamese_triplet_loss/blob/master/Siamese_With_Triplet_Loss.ipynb