在这个路径下/sign_hunter_attack/attack.py ,attack.py中345行,显然调用了两次self.loss_fct,即查询了两次model,为啥query_count只加了一次?
Kitzzaaa opened this issue · comments
Kitzzaaa commented
Chen Ma commented
- 因为第234行https://github.com/machanic/SimulatorAttack/blob/master/sign_hunter_attack/attack.py#L334 对于bxs_t 已经查询过一次。所以不必重复查询
self.loss_fct(model, bxs_t, label, target))
。(虽然代码中重复查询了一次,但是因为前面已经查询过了,所以统计查询次数的时候query_count不用增加1次) - 而且
bxs_t = self.xo_t
,所以只有当self.xo_t
被更新时(即self.exhausted=True
)需要增加查询次数,这一点在348行https://github.com/machanic/SimulatorAttack/blob/master/sign_hunter_attack/attack.py#L348增加了。 - 注意在https://github.com/machanic/SimulatorAttack/blob/master/sign_hunter_attack/attack.py#L364处,
self.xo_t = xs_t.clone()
,而xs_t
每次传入def _suggest
函数时都不同。 - 如果我的理解有误,请告诉我。