Yunfan-Li / Twin-Contrastive-Learning

Code for the paper "Twin Contrastive Learning for Online Clustering" (IJCV 2022)
56 stars 11 forks source link

关于聚类损失的代码实现 #13

Open Ericzay opened 1 year ago

Ericzay commented 1 year ago

您好,比如batch是32,cluster_number是10,于是分别有original数据的3210的prob以及augment的3210的prob这么两组,按照原文的描述,针对cluster分布的聚类损失中,一对正例就是original的第一列与augment中的第一列,对original的第一列的负例就是original的第一列与除了其他augment中的第一列的其他列形成的pair。所以您计算的是original与augment数据cluster分布之间的相似度,我这么理解应该是没错的吧? 不过我观察到在代码中,我看到您统一在输入loss前对logit进行了softmax以得到batch*cluster_number的prob,这个我能理解,但是到loss计算中,您的计算是: logits = c @ c.t() 这样计算不是算的original的prob与augment的prob之间的相似度么?并且后面的计算也是这样 所以请帮我理解一下,为什么clusterloss的求解方法和instanceloss是一样的?这块我想了好久没想明白

Yunfan-Li commented 1 year ago

loss.py的138行,c已经是转置过了

Ericzay commented 1 year ago

谢谢

etlevents commented 1 year ago

loss.py的138行,c已经是转置过了

请问如果distributed=False,不进行distributed,是不是就不会转置了啊?😧这样是不是俩损失就一样了

Ericzay commented 1 year ago

是的

Yunfan-Li commented 1 year ago

单卡可以用--nproc_per_node=1

etlevents commented 1 year ago

好的谢谢