みなさんこんにちは、
ImageNet-1k データセットに対して、教師なし双曲線コントラスト損失(Unsupervised Hyperbolic Contrastive Loss)を実装しようとしています。私の結果では、単純なユークリッドの教師なしコントラスト損失のほうが双曲線版よりもはるかに良いです。問題の理解にご協力ください。埋め込みがローレンツ多様体上にあることを保証するために expmap() と projx() を使用しています。以下が私のコードです -
def hb_contrastive_loss(z, z1, model, temp=0.07):
z_to_neighbor = model.manifold.dist(z.unsqueeze(1), z1.unsqueeze(0))
labels = torch.arange(z.size(0), device=z.device)
logits = -z_to_neighbor / temp
loss = F.cross_entropy(logits, labels)
return loss
現在の結果(1-NN accuracy):
双曲線 = 57%
コサイン = 64%
その他の情報(関連があれば):
バッチサイズ = 2048
LR = 1e-4
[リンク] [コメント]




