-
Notifications
You must be signed in to change notification settings - Fork 47
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
Added EdgeWeightNorm layer #158
base: master
Are you sure you want to change the base?
Conversation
Codecov Report
@@ Coverage Diff @@
## master #158 +/- ##
==========================================
- Coverage 85.52% 85.14% -0.39%
==========================================
Files 15 14 -1
Lines 1285 1272 -13
==========================================
- Hits 1099 1083 -16
- Misses 186 189 +3
Continue to review full report at Codecov.
|
|
||
for iter in 1:length(edge_weight) | ||
if l.norm_both | ||
push!(norm_val, edge_weight[iter] / (sqrt(dg_out[in[iter]] * dg_in[out[iter]]) + l.eps)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
these mutating operations are not AD friendly. I didn't think about it carefully but you should probably use apply_edges here
|
||
for iter in 1:length(edge_weight) | ||
if l.norm_both | ||
push!(norm_val, edge_weight[iter] / (sqrt(dg_out[in[iter]] * dg_in[out[iter]]) + l.eps)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
these mutating operations are not AD friendly. I didn't think about it carefully but you should probably use apply_edges here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried doing this using aggregate_neighbours, but ran into the same issue of it not being AD friendly, main issue being that I'm currently computing ∑e_jk
and ∑e_ki
individually for each e_ji
, which I guess is to be done with some sort of matrix multiplication.
I'm not sure yet how its to be done using apply_edges, but I'll look more into it(will try to understand how its done in pyTorch/DGL) and let you know any updates.
Verified outputs with the pytorch implementation, will add tests now.