与How to Create CaffeDB training data for siamese networks out of image directory
相关如果我有N
个标签。如何强制执行大小为N
的特征向量在对比损失层之前代表每个类的某种概率?或者通过暹罗网络设计自动出现?
答案 0 :(得分:2)
如果您只在暹罗网络中使用对比度损失,则无法强制网络分类为正确的标签 - 因为网络仅使用"相同/不相同"信息并不知道不同类的语义。
你可以做的是训练多个损失层
您应该瞄准训练一个足够适合您的域的特征表示,以便查看某些输入的训练特征向量(在某些高维度),您应该能够轻松地将该输入分类到正确的类。此外,鉴于两个输入的特征表示,应该能够容易地说出它们是否相同"或者"不一样"。
因此,我建议您使用"bottom"
作为其中一个"InnerProduct"
图层的输出,使用两个丢失层训练您的深层网络。一个损失是对比损失。另一个损失应该有另一个"InnerProduct"
图层,其中包含num_output: N
和"SoftmaxWithLoss"
图层。
在这项工作中使用了类似的概念: Sun, Chen, Wang and Tang Deep Learning Face Representation by Joint Identification-Verification NIPS 2014