triplet-loss-pytorch icon indicating copy to clipboard operation
triplet-loss-pytorch copied to clipboard

关于只是用三元组而不加权交叉熵损失进行训练

Open MercuialC opened this issue 5 years ago • 8 comments

您好,我运行了您的代码 但是我只使用三元组损失进行训练,损失一直是在一个很小的值,请问您也是这样吗

MercuialC avatar Oct 13 '20 09:10 MercuialC

这种情况可能是您的数据集表现非常好(小概率),也可能是构造的三元组有问题,检查您的数据标签和内容。确保一一对应并分布合理。另外,损失是否会下降?还是只在小范围内做抖动?为了排除loss的问题,您可以尝试替换成交叉熵损失,使用同样的超参数进行训练,看是否会出现同样的情况。

chencodeX avatar Oct 13 '20 10:10 chencodeX

感谢您的回复,我将您的工作用于细粒度CUB-200-2011数据集上,仅使用三元组损失。一开始损失就非常低,后续在小范围抖动,准确率无法提升。若仅使用交叉熵则能正常训练并且获得还不错的准确率。我检查了三元组的构造似乎没什么问题。
model.fc = nn.Linear(2048, 256) model.classifier = nn.Linear(256, num_classes) 想请教您关于使用resnet50时fc层输出256的embedding用于三元组损失,这个对于不同数据集需要修改吗,或者说若修改应如何修改。

MercuialC avatar Oct 14 '20 01:10 MercuialC

我尝试过256 和1024 ,没有明显影响

chencodeX avatar Oct 19 '20 02:10 chencodeX

后来怎么样了

chencodeX avatar Nov 09 '20 10:11 chencodeX

输出embedding大小影响不明显。但是在CUB数据集上三元组损失似乎没有提升,相同参数下仅使用交叉熵损失达到了86以上的准确率,仅使用三元组损失训练不起来损失一直比较低。不知道您有没有遇到过这种情况

MercuialC avatar Nov 09 '20 11:11 MercuialC

您好,为什么我在用三元组损失训练的时候,损失值在两个epoch之后就变为0了呢?

CyberAI-XDU avatar Apr 17 '23 14:04 CyberAI-XDU

输出embedding大小影响不明显。但是在CUB数据集上三元组损失似乎没有提升,相同参数下仅使用交叉熵损失达到了86以上的准确率,仅使用三元组损失训练不起来损失一直比较低。不知道您有没有遇到过这种情况

似乎是在别的数据集上遇到过类似问题。

chencodeX avatar Jul 17 '23 03:07 chencodeX

您好,为什么我在用三元组损失训练的时候,损失值在两个epoch之后就变为0了呢?

这个需要检查一下代码或者数据文件,是否存在损坏。

chencodeX avatar Jul 17 '23 03:07 chencodeX