yzyouzhang / AIR-ASVspoof

Official implementation of the SPL paper "One-class Learning Towards Synthetic Voice Spoofing Detection"
MIT License
103 stars 28 forks source link

score 大于1 #42

Closed JJun-Guo closed 1 year ago

JJun-Guo commented 1 year ago

为什么有的真实样本推理出的score会大于1呢?正常来讲不应该是-1到1之间吗?

yzyouzhang commented 1 year ago

确实应该是-1到1之间。能给我你生成score的script吗?你用的是OC-Softmax吗?

JJun-Guo commented 1 year ago

确实应该是-1到1之间。能给我你生成score的script吗?你用的是OC-Softmax吗?

scores = x @ w.transpose(0,1) output_scores = scores.clone() scores[labels == 0] = self.r_real - scores[labels == 0] scores[labels == 1] = scores[labels == 1] - self.r_fake 我理解这几行代码是想要real 的score逼近 self.r_real(0.9),fake的score逼近 self.r_fake(0.2),最终样本的score应该是分布在(0,1)吧,为什么是(-1,1)呢?

JJun-Guo commented 1 year ago

感觉是溢出了,我从oc-softmax模型的dict里提取的w参数进行推理的,真实样本的score大于1,1.00002

yzyouzhang commented 1 year ago

确实应该是-1到1之间。能给我你生成score的script吗?你用的是OC-Softmax吗?

scores = x @ w.transpose(0,1) output_scores = scores.clone() scores[labels == 0] = self.r_real - scores[labels == 0] scores[labels == 1] = scores[labels == 1] - self.r_fake 我理解这几行代码是想要real 的score逼近 self.r_real(0.9),fake的score逼近 self.r_fake(0.2),最终样本的score应该是分布在(0,1)吧,为什么是(-1,1)呢?

这几行代码是想要real的score越大越好,fake的score越小越好,0.9和0.2只是类似于ReLU的约束。因为是计算的cosine similarity,所以在(-1,1)

yzyouzhang commented 1 year ago

感觉是溢出了,我从oc-softmax模型的dict里提取的w参数进行推理的,真实样本的score大于1,1.00002

确实可能是溢出