andrea-pollastro / DGCF

MIT License
0 stars 0 forks source link

May I request the code related to the training of the SEED dataset from you? #1

Open 2000CLW opened 8 months ago

2000CLW commented 8 months ago

Dear Andrea Pollastro, I am a graduate student who recently read your article titled “Adaptive filters in Graph Convolutional Neural Networks” and successfully ran the code provided by you for the Mnist dataset. In order to gain a better understanding. May I request the code related to the training of the SEED dataset from you? Specifically, I am interested in understanding how you construct the adjacency matrix. I would greatly appreciate it if you could share this code with me. My email address is caoliwen20000615@163.com. Thank you very much!

Best regards, CaoLiwen

andrea-pollastro commented 8 months ago

Dear CaoLiwen,

as it was described in the paper (Sec 4.3), the adjacency matrix on the SEED dataset was modeled considering the EEG channel disposition on the scalp. In particular, the graph representing the EEG channels resulted to be a complete weighted graph, with nodes representing the channels and the weights between the i-th and j-th nodes representing the physical distance between the corresponding channels.

Best, Andrea

2000CLW commented 8 months ago

Thank you for your reply. I have tried to construct an adjacency matrix and have set the network structure and parameters according to the paper’s settings for the SEED dataset. I set the output channel to 4 and changed the ConvGNN layer to a global average pooling layer, as well as adjusting other structures and parameters according to the paper. However, the accuracy of the test set on SEED dataset was only 33%. I would like to know more about the training process and network details. Can you share the code of the training process and network for SEED dataset with me? I promise to use it for learning purposes only and never disclose it. Or I could send you my code and ask for your guidance. Thank you very much! Here is the network I modified for the SEED dataset according to the paper.

filter-generating network definition

filter_generating_network = nn.Sequential(
    torch.nn.Linear(IN_CHANNELS * N_NODES, FGN_HIDDEN_NODES),
    torch.nn.ReLU(),
    torch.nn.Linear(FGN_HIDDEN_NODES, OUT_CHANNELS * IN_CHANNELS * KERNEL_SIZE),
    torch.nn.Linear(OUT_CHANNELS * IN_CHANNELS * KERNEL_SIZE, FGN_HIDDEN_NODES),
    torch.nn.ReLU(),
    torch.nn.Linear(FGN_HIDDEN_NODES, OUT_CHANNELS * IN_CHANNELS * KERNEL_SIZE),
    torch.nn.Linear(OUT_CHANNELS * IN_CHANNELS * KERNEL_SIZE, FGN_HIDDEN_NODES),
    torch.nn.ReLU(),
    torch.nn.Linear(FGN_HIDDEN_NODES, OUT_CHANNELS * IN_CHANNELS * KERNEL_SIZE)
)

# GNN definition
net = nn.Sequential(
    DGCF(n_nodes=N_NODES, 
        kernel_size=KERNEL_SIZE, 
        neighborhoods=neighborhoods, 
        in_channels=IN_CHANNELS, 
        out_channels=OUT_CHANNELS,
        filter_generating_network=filter_generating_network),
    nn.ReLU(),
    nn.AdaptiveAvgPool2d(1),
    nn.ReLU(),
    nn.Flatten(), # torch.Size([128, 1])
    #nn.Linear(N_NODES * 20, N_CLASSES)
    nn.Linear(1, N_CLASSES)