1、
idxs = torch.arange(0, y_pred.shape[0], device=‘cuda’)
y_true = idxs + 1 - idxs % 2 * 2
排序加上2以内反序,得到【1,0,3,2】的序列
2、
128768的扩充,最后计算成128128的相似度
similarities = F.cosine_similarity(y_pred.unsqueeze(1), y_pred.unsqueeze(0), dim=2)
similarities = similarities - torch.eye(y_pred.shape[0], device=‘cuda’) * 1e12
similarities = similarities / lamda
3、
最后一步,计算loss时把label当成分类计算,及第0个仅分类到第1类,即维度不同的loss计算
loss = F.cross_entropy(similarities, y_true)