Open MercuialC opened 3 years ago
这种情况可能是您的数据集表现非常好(小概率),也可能是构造的三元组有问题,检查您的数据标签和内容。确保一一对应并分布合理。另外,损失是否会下降?还是只在小范围内做抖动?为了排除loss的问题,您可以尝试替换成交叉熵损失,使用同样的超参数进行训练,看是否会出现同样的情况。
感谢您的回复,我将您的工作用于细粒度CUB-200-2011数据集上,仅使用三元组损失。一开始损失就非常低,后续在小范围抖动,准确率无法提升。若仅使用交叉熵则能正常训练并且获得还不错的准确率。我检查了三元组的构造似乎没什么问题。
model.fc = nn.Linear(2048, 256)
model.classifier = nn.Linear(256, num_classes)
想请教您关于使用resnet50时fc层输出256的embedding用于三元组损失,这个对于不同数据集需要修改吗,或者说若修改应如何修改。
我尝试过256 和1024 ,没有明显影响
后来怎么样了
输出embedding大小影响不明显。但是在CUB数据集上三元组损失似乎没有提升,相同参数下仅使用交叉熵损失达到了86以上的准确率,仅使用三元组损失训练不起来损失一直比较低。不知道您有没有遇到过这种情况
您好,为什么我在用三元组损失训练的时候,损失值在两个epoch之后就变为0了呢?
输出embedding大小影响不明显。但是在CUB数据集上三元组损失似乎没有提升,相同参数下仅使用交叉熵损失达到了86以上的准确率,仅使用三元组损失训练不起来损失一直比较低。不知道您有没有遇到过这种情况
似乎是在别的数据集上遇到过类似问题。
您好,为什么我在用三元组损失训练的时候,损失值在两个epoch之后就变为0了呢?
这个需要检查一下代码或者数据文件,是否存在损坏。
您好,我运行了您的代码 但是我只使用三元组损失进行训练,损失一直是在一个很小的值,请问您也是这样吗