这个CircleLoss是基于批量数据实现?
Closed this issue · 5 comments
您好,请问下
看您的CircleLoss代码中的处理与最终打印结果值看着是单独一个数据CircleLoss的计算;但是在您的输入
feat = nn.functional.normalize(torch.rand(256, 64, requires_grad=True))
lbl = torch.randint(high=10, size=(256,)
看着是批量计算256
256不是batch size吗
看着是的,但是CircleLoss代码中的处理与最终打印结果值看着又像是单独一个数据CircleLoss的计算,我就蒙了
我找到原因,在convert_label_to_similarity中返回值是similarity_matrix[positive_matrix], similarity_matrix[negative_matrix],这里都是一维。而且每次这2个返回的长度还不一样.这样将label与特征建立权重关系怎么保持稳定的呢??
我找到原因,在convert_label_to_similarity中返回值是similarity_matrix[positive_matrix], similarity_matrix[negative_matrix],这里都是一维。而且每次这2个返回的长度还不一样.这样将label与特征建立权重关系怎么保持稳定的呢??
我也发现了,其实,那个similarity_matrix 已经被打成了1 维的, 然后里面那个positive_matrix 是里面只有 0 1数值,相当于从1维度similarity_matrix中帅选同类或者不同类的值, 1为 同类, 0为 不同类。 同类的个数和不同类的不一样。
感谢