@@ -2,10 +2,10 @@ using GeometricFlux
22using Flux
33using Flux: onehotbatch, onecold, logitcrossentropy, throttle
44using Flux: @epochs
5- using Flux. Data: DataLoader
65using JLD2
76using Statistics: mean
87using SparseArrays
8+ using LinearAlgebra
99using Graphs. SimpleGraphs
1010using Graphs: adjacency_matrix
1111using CUDA
@@ -24,29 +24,30 @@ epochs = 10
2424# # Preprocessing data
2525train_X = Matrix {Float32} (features) |> gpu # dim: num_features * num_nodes
2626train_y = Matrix {Float32} (labels) |> gpu # dim: target_catg * num_nodes
27- adj_mat = Matrix {Float32} (adjacency_matrix (g)) |> gpu
27+ A = Matrix {Int} ((adjacency_matrix (g) + I) .≥ 1 )
28+ fg = FeaturedGraph (A, :adjm )
2829
2930# # Model
30- model = Chain (GATConv (g , num_features=> hidden, heads= heads),
31+ model = Chain (GATConv (fg , num_features=> hidden, heads= heads),
3132 Dropout (0.6 ),
32- GATConv (g , hidden* heads=> target_catg, heads= heads, concat= false )
33+ GATConv (fg , hidden* heads=> target_catg, heads= heads, concat= false )
3334 ) |> gpu
3435# test model
35- # @show model(train_X)
36+ @show model (train_X)
3637
3738# # Loss
3839loss (x, y) = logitcrossentropy (model (x), y)
3940accuracy (x, y) = mean (onecold (cpu (model (x))) .== onecold (cpu (y)))
4041
4142# test loss
42- # @show loss(train_X, train_y)
43+ @show loss (train_X, train_y)
4344
4445# test gradient
45- # @show gradient(X -> loss(X , train_y), train_X )
46+ @show gradient (() -> loss (train_X , train_y), Flux . params (model) )
4647
4748# # Training
4849ps = Flux. params (model)
49- train_data = DataLoader (train_X, train_y, batchsize= num_nodes)
50+ train_data = Flux . Data . DataLoader (( train_X, train_y) , batchsize= num_nodes)
5051opt = ADAM (0.01 )
5152evalcb () = @show (accuracy (train_X, train_y))
5253
0 commit comments