如何用 Caffe siamese CNN 强制表示标签概率的特征向量?
How to enforce feature vector representing label probability with Caffe siamese CNN?
与相关
如果我有 N
个标签。我如何强制执行对比损失层之前大小为 N
的特征向量代表每个 class 的某种概率?还是连体网设计会自动出现?
如果您只在 Siamese 网络中使用对比损失,则无法强制网络 class 化为正确的标签 - 因为网络仅使用 "same/not same" 信息进行训练并且不知道不同 classes.
的语义
你可以做的是使用多个损失层进行训练。
您的目标应该是训练一个足以满足您的领域的特征表示,以便查看某些输入的训练特征向量(在某些高维中)您应该能够轻松 class 将该输入验证为正确的class。此外,考虑到两个输入的特征表示,应该能够轻松地说出它们是 "same" 还是 "not same".
因此,我建议您使用两个损失层训练深度网络,其中 "bottom"
作为 "InnerProduct"
层之一的输出。一种损失是对比损失。另一个损失应该有另一个 "InnerProduct"
层 num_output: N
和一个 "SoftmaxWithLoss"
层。
这项工作中使用了类似的概念:
Sun, Chen, Wang and Tang Deep Learning Face Representation by Joint Identification-Verification NIPS 2014.
与
如果我有 N
个标签。我如何强制执行对比损失层之前大小为 N
的特征向量代表每个 class 的某种概率?还是连体网设计会自动出现?
如果您只在 Siamese 网络中使用对比损失,则无法强制网络 class 化为正确的标签 - 因为网络仅使用 "same/not same" 信息进行训练并且不知道不同 classes.
的语义你可以做的是使用多个损失层进行训练。
您的目标应该是训练一个足以满足您的领域的特征表示,以便查看某些输入的训练特征向量(在某些高维中)您应该能够轻松 class 将该输入验证为正确的class。此外,考虑到两个输入的特征表示,应该能够轻松地说出它们是 "same" 还是 "not same".
因此,我建议您使用两个损失层训练深度网络,其中 "bottom"
作为 "InnerProduct"
层之一的输出。一种损失是对比损失。另一个损失应该有另一个 "InnerProduct"
层 num_output: N
和一个 "SoftmaxWithLoss"
层。
这项工作中使用了类似的概念: Sun, Chen, Wang and Tang Deep Learning Face Representation by Joint Identification-Verification NIPS 2014.