问题描述
我正在尝试创建一个具有三元组损失的连体网络,我正在使用 github 示例来帮助我。我对此很陌生,我无法理解如何从模型中提取嵌入。以下是架构:
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.3.0/p5.min.js"></script>
让我感到困惑的是我发现很难将矩阵可视化,我不明白为什么锚点是 y[:,:emb_size],正数是 y_pred[:,emb_size:2emb_size] 和负数y_pred[:,2emb_size:].
如果需要更多上下文的完整代码:https://github.com/pranjalg2308/siamese_triplet_loss/blob/master/Siamese_With_Triplet_Loss.ipynb
解决方法
完整代码片段
in_anc = Input(shape=(105,105,1))
in_pos = Input(shape=(105,1))
in_neg = Input(shape=(105,1))
em_anc = embedding_model(in_anc)
em_pos = embedding_model(in_pos)
em_neg = embedding_model(in_neg)
out = concatenate([em_anc,em_pos,em_neg],axis=1)
siamese_net = Model(
[in_anc,in_pos,in_neg],out
)
anchor、pos 和neg 连接到一个输出张量,所以anchor 是y_pred[:,:emb_size]...
而 embedding_model.predict(np.expand_dims(anchor_image[3],axis=0))
会提供您的嵌入。