DSE-MSU / DeepRobust

A pytorch adversarial library for attack and defense methods on images and graphs
MIT License
976 stars 189 forks source link

Question on the symmetric constraint in ProGNN #73

Closed zzysh12345 closed 3 years ago

zzysh12345 commented 3 years ago

Hi, Thanks for sharing the DeepRobust code. I've been studying the code of ProGNN. There is a operation for the symmetric constraint: image I noticed that in EstimateAdj in ProGNN.py, the process is realized by: if self.symmetric: adj = (self.estimated_adj + self.estimated_adj.t())

It seems that 2 is missing. Is this a mistake or a design?

ChandlerBang commented 3 years ago

Hi, thanks for pointing this inconsistency out. It should be adj = (self.estimated_adj + self.estimated_adj.t())/2 and I have just fixed the issue. I also need to note that the default Pro-GNN hyper-parameter setting does not exert the symmetric constraint; so it does not affect the reported performance.

zzysh12345 commented 3 years ago

Got it. But why doesn't the defualt setting exert the symmetric constraint,? It seems different from the paper. What effects will it have if using the constraint?

ChandlerBang commented 3 years ago

We treat this constraint as a hyper-parameter. And it turns out that without this constraint the performance is better.

zzysh12345 commented 3 years ago

Got it. Thanks.