THUYimingLi / BackdoorBox

The open-sourced Python toolbox for backdoor attacks and defenses.
GNU General Public License v2.0
431 stars 69 forks source link

关于Spectral的一点问题 #74

Open GuoJiaming1 opened 1 month ago

GuoJiaming1 commented 1 month ago

Spectral中计算tp,tn,fp,fn这些使用的不是sklearn而是开发者自己写的compute_metric.py,请恕我才疏学浅理解不能。 ``` def compute_confusion_matrix(precited,expected): predicted = np.array(precited,dtype = int) expected = np.array(expected,dtype = int) part = precitedexpected # 对结果进行分类,亦或使得判断正确的为0,判断错误的为1


且不论precited和predicted分别是什么(说到底precited是哪国语言?),是否可以使用通用一点的方法做异或计算?事实上我用spectral所得出的实验数据完全离谱,tp+fn既不是投毒样本量也不是干净样本量。

另:我用badnets对cifar10投毒,并以test_Spectral.py中的代码执行过滤,最终tp=58, tn=46473, fp=1027, fn=2442。也许是我做错了,但我衷心建议为防御方法附上开发者的一个执行结果及参数设置以作为参考,毕竟论文里的数据并非总值得信任。
THUYimingLi commented 1 month ago

Spectral中计算tp,tn,fp,fn这些使用的不是sklearn而是开发者自己写的compute_metric.py,请恕我才疏学浅理解不能。 ``` def compute_confusion_matrix(precited,expected): predicted = np.array(precited,dtype = int) expected = np.array(expected,dtype = int) part = precitedexpected # 对结果进行分类,亦或使得判断正确的为0,判断错误的为1

且不论precited和predicted分别是什么(说到底precited是哪国语言?),是否可以使用通用一点的方法做异或计算?事实上我用spectral所得出的实验数据完全离谱,tp+fn既不是投毒样本量也不是干净样本量。

另:我用badnets对cifar10投毒,并以test_Spectral.py中的代码执行过滤,最终tp=58, tn=46473, fp=1027, fn=2442。也许是我做错了,但我衷心建议为防御方法附上开发者的一个执行结果及参数设置以作为参考,毕竟论文里的数据并非总值得信任。

感谢意见。然而,目前该方法并没有完全完善,还在更新过程中,这也是为什么在主页markdown上我们并没有把该方法的名字列到我们开发的defense列表中。给你造成的不便我表示歉意。待该方法完善后,我会再通过这个issue通知你 :)

GuoJiaming1 commented 1 month ago

实际感谢!我见它不在Methods Under Development里,还以为是已完成的方法。