Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

模型测试效果不理想 #11

Open
lichanglin3445667 opened this issue May 21, 2019 · 19 comments
Open

模型测试效果不理想 #11

lichanglin3445667 opened this issue May 21, 2019 · 19 comments

Comments

@lichanglin3445667
Copy link

您好,我按照论文中的步骤,用CASIA数据集抽样5000个类(总共22万个样本)做训练集,用512,1024,1845三个数据集做测试集,用train.py的默认参数训练的模型,测试时达不到best.ckpt模型的效果。和best.ckpt比,我的训练结果的precision只有不到0.8。请问您有没有什么建议?

@CaiQiuYu
Copy link

作者的best.ckpt也没有到0.8吧,移除单聚类结点才有。我正常训练完,结果和作者的很贴近了,甚至还略好

@Zhongdao
Copy link
Owner

@lichanglin3445667 F-score是多少呢

@lichanglin3445667
Copy link
Author

@Zhongdao Precision, Recall, F-score, NMI分别是:0.7518,0.8088,0.7793,0.9101

@lichanglin3445667
Copy link
Author

@Zhongdao 抱歉之前写错了,是recall比较低,best.ckpt能达到0.9080,但我训练的结果只有0.8左右

@xxx2974
Copy link

xxx2974 commented May 29, 2019

@Zhongdao 作者你好,我想将分类问题利用您这个聚类方法来解决,在训练阶段出现accuracy很高,但是precision和recall都很低,几乎为0,出现这样情况的原因可能是什么呢?在构造knn_graph时,k的选择有什么依据呢?

还有一个疑问,您构造的IPS子图中,positive节点数似乎非常少,在这样的情况下,训练时,recall和precision为何会很高,几乎为1呢?

谢谢!

@Zhongdao
Copy link
Owner

@lichanglin3445667 准确的knn graph效果比较好,ANN graph会稍微差一点,是这个原因吗?

@Zhongdao
Copy link
Owner

@xxx2974 K的选择要根据数据的情况,比如你可以测试一下在某个K的条件下,如果用ground truth连接,那么最终的效果如何,这可以作为一个上界参考。
第二个问题是那个recall和precision是pair-wise的R和P, 不是最终的评测指标,仅供参考,它们在数值上往往偏高。

@xxx2974
Copy link

xxx2974 commented May 29, 2019

@xxx2974 K的选择要根据数据的情况,比如你可以测试一下在某个K的条件下,如果用ground truth连接,那么最终的效果如何,这可以作为一个上界参考。
第二个问题是那个recall和precision是pair-wise的R和P, 不是最终的评测指标,仅供参考,它们在数值上往往偏高。

谢谢答疑!
那像我这样的就是accuracy很高,precision和recall几乎为0的现象是为什么呢?

@JingweiZhang12
Copy link

@xxx2974 可能是你的knn graph中的负样本太多,虽然正样本预测错误,导致precision和recall都很低,但是负样本对的,accuracy仍然很高

@xxx2974
Copy link

xxx2974 commented May 30, 2019

@xxx2974 可能是你的knn graph中的负样本太多,虽然正样本预测错误,导致precision和recall都很低,但是负样本对的,accuracy仍然很高

谢谢,我一开始也觉得是这个原因。但后来我发现作者提供的数据构造的IPS子图,大多是也都是负样本,正样本也很少呢!

另外,knn_graph里面的正样本数目太少,应该还是和通过网络提取到的特征有关吧?我是用预训练的resnet50提取的数据特征,有点不知道问题出在哪里,为什么构造的knn_graph里面的负样本会那么多。

@jxyecn
Copy link

jxyecn commented May 30, 2019

在训练阶段出现accuracy很高,但是precision和recall都很低,几乎为0,出现这样情况的原因可能是什么呢?在构造knn_graph时,k的选择有什么依据呢?

@xxx2974 我在使用作者提供的训练集训练时也发现了这个问题,在100batch左右二分类就偏到一边去了,具体表现就是你说的这样,你可以测试下我们碰到的情形是不是一样的。

@xxx2974
Copy link

xxx2974 commented May 30, 2019

在训练阶段出现accuracy很高,但是precision和recall都很低,几乎为0,出现这样情况的原因可能是什么呢?在构造knn_graph时,k的选择有什么依据呢?

@xxx2974 我在使用作者提供的训练集训练时也发现了这个问题,在100batch左右二分类就偏到一边去了,具体表现就是你说的这样,你可以测试下我们碰到的情形是不是一样的。

我发现了,这个precision和recall的确和你提取特征的方式有关,如果提取的特征好,knn_graph构造的就比较好,训练的结果也比较好。只是不清楚作者是用什么样的方式提取的特征。

@lijinchao2007
Copy link

我对比这个方法的时候
我用LTC的训练和测试数据,验证的结果为(注意修改模型输入的dim)

mx_sz:900 step=0.6

Number of nodes: 584013
Precision Recall F-Sore NMI
/home/lijc08/miniconda3/envs/python2.7/lib/python2.7/site-packages/sklearn/metrics/cluster/supervised.py:844: FutureWarning: The behavior of NMI will change in version 0.22. To match the behavior of 'v_measure_score', NMI will use average_method='arithmetic' by default.
FutureWarning)
0.4561 0.8628 0.5967 0.9460

After removing singleton culsters, number of nodes: 548747
Precision Recall F-Sore NMI
0.9652 0.4561 0.6195 0.9608

mx_sz:300 step=0.6


Number of nodes: 584013
Precision Recall F-Sore NMI
/home/lijc08/miniconda3/envs/python2.7/lib/python2.7/site-packages/sklearn/metrics/cluster/supervised.py:844: FutureWarning: The behavior of NMI will change in version 0.22. To match the behavior of 'v_measure_score', NMI will use average_method='arithmetic' by default.
FutureWarning)
0.6805 0.8153 0.7418 0.9550

After removing singleton culsters, number of nodes: 542319
Precision Recall F-Sore NMI
0.9586 0.6805 0.7959 0.9736

@lijinchao2007
Copy link

graph_propagation在生成最终聚类结果的时候,max_sz参数影响很大,而且难以确定。 @Zhongdao

@smallsheep666
Copy link

在训练阶段出现accuracy很高,但是precision和recall都很低,几乎为0,出现这样情况的原因可能是什么呢?在构造knn_graph时,k的选择有什么依据呢?

@xxx2974 我在使用作者提供的训练集训练时也发现了这个问题,在100batch左右二分类就偏到一边去了,具体表现就是你说的这样,你可以测试下我们碰到的情形是不是一样的。

我发现了,这个precision和recall的确和你提取特征的方式有关,如果提取的特征好,knn_graph构造的就比较好,训练的结果也比较好。只是不清楚作者是用什么样的方式提取的特征。

请问一下 他这个knn_graph 是根据特征算相似度 然后取top 构成的图嘛?我看作者给出的例子里面,knn_graph的值看起来像是index,但是我随便算了几个cos距离,好像不是我想的这么回事儿

@zhufq00
Copy link

zhufq00 commented Jan 21, 2020

所以precision和recall都很低,几乎为0的时候该怎么解决啊

@zhufq00
Copy link

zhufq00 commented Jan 26, 2020

@Zhongdao 作者你好,我想将分类问题利用您这个聚类方法来解决,在训练阶段出现accuracy很高,但是precision和recall都很低,几乎为0,出现这样情况的原因可能是什么呢?在构造knn_graph时,k的选择有什么依据呢?

还有一个疑问,您构造的IPS子图中,positive节点数似乎非常少,在这样的情况下,训练时,recall和precision为何会很高,几乎为1呢?

谢谢!

请问你的问题解决了吗,我在将这个方法应用到新数据集的时候也训练不出来

@RyanCV
Copy link

RyanCV commented Mar 19, 2020

@lijinchao2007
@Zhongdao

graph_propagation在生成最终聚类结果的时候,max_sz参数影响很大,而且难以确定。

I also found the same issue, if max_sz=900, then it gives two clusters; if max_sz=850, the it gives 35 clusters. Any idea how to tune max_sz?
Thanks.

@liupengcnu
Copy link

作者的best.ckpt也没有到0.8吧,移除单聚类结点才有。我正常训练完,结果和作者的很贴近了,甚至还略好

您好,我现在用我自己的数据在训练的时候发现我的acc极高,为1, 但是precision和recall都为0,请问我应该怎么调整,我是用了2万5个ID,每个ID有10张图,先用与训练好的模型进行特征提取,并且将feature和label都保存到两个npy文件,然后用knsw得到knn_graph, 然后用于训练。在这里我同样有另外一个疑问,就是因为我的训练数据是每个ID有10张图,所以我的knn_graph里面第一个值是label0的临近点,第二个值也是label0的临近点,第三个也是,直到第十一个才是label1的临近点,请问这样构造数据对吗,我看作者的好像是第几个值对应的就是label几,请问是否可以加个联系方式请教一下您,我的微信是13810332182,谢谢!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests