|
7 | 7 | 0 1 0 1
|
8 | 8 | 1 0 1 0]
|
9 | 9 |
|
10 |
| - fg = FeaturedGraph(adj, graph_type=GRAPH_T) |> gpu |
11 |
| - |
| 10 | + fg = FeaturedGraph(adj, graph_type=GRAPH_T) |
| 11 | + X = rand(Float32, in_channel, N) |
| 12 | + |
12 | 13 | @testset "GCNConv" begin
|
13 |
| - gc = GCNConv(in_channel=>out_channel) |> gpu |
14 |
| - @test size(gc.weight) == (out_channel, in_channel) |
15 |
| - @test size(gc.bias) == (out_channel,) |
16 |
| - @test adjacency_matrix(gc.fg |> cpu) == adj |
17 |
| - |
18 |
| - X = rand(in_channel, N) |> gpu |
19 |
| - Y = gc(fg, X) |
20 |
| - @test size(Y) == (out_channel, N) |
21 |
| - |
22 |
| - g = Zygote.gradient(x -> sum(gc(x)), X)[1] |
23 |
| - @test size(g) == size(X) |
24 |
| - |
25 |
| - g = Zygote.gradient(model -> sum(model(X)), gc)[1] |
26 |
| - @test size(g.weight) == size(gc.weight) |
27 |
| - @test size(g.bias) == size(gc.bias) |
| 14 | + m = GCNConv(in_channel => out_channel) |
| 15 | + gpugradtest(m, fg, X) |
28 | 16 | end
|
29 | 17 |
|
30 |
| - |
31 | 18 | @testset "ChebConv" begin
|
32 | 19 | k = 6
|
33 |
| - cc = ChebConv(in_channel=>out_channel, k) |> gpu |
34 |
| - @test size(cc.weight) == (out_channel, in_channel, k) |
35 |
| - @test size(cc.bias) == (out_channel,) |
36 |
| - @test adjacency_matrix(cc.fg |> cpu) == adj |
37 |
| - @test cc.k == k |
38 |
| - |
39 |
| - @test_broken begin |
40 |
| - X = rand(in_channel, N) |> gpu |
41 |
| - Y = cc(fg, X) |
42 |
| - @test size(Y) == (out_channel, N) |
43 |
| - |
44 |
| - g = Zygote.gradient(x -> sum(cc(x)), X)[1] |
45 |
| - @test size(g) == size(X) |
46 |
| - |
47 |
| - g = Zygote.gradient(model -> sum(model(fg, X)), cc)[1] |
48 |
| - @test size(g.weight) == size(cc.weight) |
49 |
| - @test size(g.bias) == size(cc.bias) |
50 |
| - |
51 |
| - true |
52 |
| - end |
| 20 | + m = ChebConv(in_channel => out_channel, k) |
| 21 | + @test_broken gpugradtest(m, fg, X) |
53 | 22 | end
|
54 | 23 |
|
55 | 24 | @testset "GraphConv" begin
|
56 |
| - gc = GraphConv(in_channel=>out_channel) |> gpu |
57 |
| - @test size(gc.weight1) == (out_channel, in_channel) |
58 |
| - @test size(gc.weight2) == (out_channel, in_channel) |
59 |
| - @test size(gc.bias) == (out_channel,) |
60 |
| - |
61 |
| - X = rand(in_channel, N) |> gpu |
62 |
| - Y = gc(fg, X) |
63 |
| - @test size(Y) == (out_channel, N) |
64 |
| - |
65 |
| - g = Zygote.gradient(x -> sum(gc(fg, x)), X)[1] |
66 |
| - @test size(g) == size(X) |
67 |
| - |
68 |
| - g = Zygote.gradient(model -> sum(model(fg, X)), gc)[1] |
69 |
| - @test size(g.weight1) == size(gc.weight1) |
70 |
| - @test size(g.weight2) == size(gc.weight2) |
71 |
| - @test size(g.bias) == size(gc.bias) |
| 25 | + m = GraphConv(in_channel => out_channel) |
| 26 | + gpugradtest(m, fg, X) |
72 | 27 | end
|
73 | 28 |
|
74 | 29 | @testset "GATConv" begin
|
75 |
| - gat = GATConv(in_channel=>out_channel) |> gpu |
76 |
| - @test size(gat.weight) == (out_channel, in_channel) |
77 |
| - @test size(gat.bias) == (out_channel,) |
78 |
| - |
79 |
| - X = rand(in_channel, N) |> gpu |
80 |
| - Y = gat(fg, X) |
81 |
| - @test size(Y) == (out_channel, N) |
82 |
| - |
83 |
| - g = Zygote.gradient(x -> sum(gat(fg, x)), X)[1] |
84 |
| - @test size(g) == size(X) |
| 30 | + m = GATConv(in_channel => out_channel) |
| 31 | + gpugradtest(m, fg, X) |
| 32 | + end |
85 | 33 |
|
86 |
| - g = Zygote.gradient(model -> sum(model(fg, X)), gat)[1] |
87 |
| - @test size(g.weight) == size(gat.weight) |
88 |
| - @test size(g.bias) == size(gat.bias) |
89 |
| - @test size(g.a) == size(gat.a) |
| 34 | + @testset "GINConv" begin |
| 35 | + m = GINConv(Dense(in_channel, out_channel), eps=0.1f0) |
| 36 | + gpugradtest(m, fg, X) |
90 | 37 | end
|
91 | 38 |
|
92 | 39 | @testset "GatedGraphConv" begin
|
93 | 40 | num_layers = 3
|
94 |
| - ggc = GatedGraphConv(out_channel, num_layers) |> gpu |
95 |
| - @test size(ggc.weight) == (out_channel, out_channel, num_layers) |
96 |
| - |
97 |
| - X = rand(in_channel, N) |> gpu |
98 |
| - Y = ggc(fg, X) |
99 |
| - @test size(Y) == (out_channel, N) |
100 |
| - |
101 |
| - g = Zygote.gradient(x -> sum(ggc(fg, x)), X)[1] |
102 |
| - @test size(g) == size(X) |
103 |
| - |
104 |
| - g = Zygote.gradient(model -> sum(model(fg, X)), ggc)[1] |
105 |
| - @test size(g.weight) == size(ggc.weight) |
| 41 | + m = GatedGraphConv(out_channel, num_layers) |
| 42 | + gpugradtest(m, fg, X) |
106 | 43 | end
|
107 | 44 |
|
108 | 45 | @testset "EdgeConv" begin
|
109 |
| - ec = EdgeConv(Dense(2*in_channel, out_channel)) |> gpu |
110 |
| - X = rand(in_channel, N) |> gpu |
111 |
| - Y = ec(fg, X) |
112 |
| - @test size(Y) == (out_channel, N) |
113 |
| - |
114 |
| - g = Zygote.gradient(x -> sum(ec(fg, x)), X)[1] |
115 |
| - @test size(g) == size(X) |
116 |
| - |
117 |
| - g = Zygote.gradient(model -> sum(model(fg, X)), ec)[1] |
118 |
| - @test size(g.nn.weight) == size(ec.nn.weight) |
119 |
| - @test size(g.nn.bias) == size(ec.nn.bias) |
| 46 | + m = EdgeConv(Dense(2*in_channel, out_channel)) |
| 47 | + gpugradtest(m, fg, X) |
120 | 48 | end
|
121 | 49 | end
|
0 commit comments