GCN Note


1.1 Base Layer

class Net(torch.nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = GCNConv(2, 64)
        self.conv2 = GCNConv(64, 256)
        self.conv3 = GCNConv(256, 512)
        self.linear = torch.nn.Linear(512, 512)
        self.linear2 = torch.nn.Linear(512, 10)

    def forward(self, data):
        x, edge_index = data.x, data.edge_index
        x = self.conv1(x, edge_index)
        x = F.relu(x)
        x = F.dropout(x, training=self.training)
        x = self.conv2(x, edge_index)
        x = F.relu(x)
        x = F.dropout(x, training=self.training)
        x = self.conv3(x, edge_index)
        x = F.relu(x)
        x = F.dropout(x, training=self.training)
        x, _ = scatter_max(x, data.batch, dim=0)
        action_mean = self.linear(x)
        x = self.linear2(action_mean)
        return x

Output

epoch: 1 loss: 1.311  Test Accuracy: 76.31 %%  Test Loss: 0.714           
epoch: 2 loss: 0.592  Test Accuracy: 87.32 %%  Test Loss: 0.398           
epoch: 3 loss: 0.414  Test Accuracy: 88.37 %%  Test Loss: 0.371           
epoch: 4 loss: 0.350  Test Accuracy: 89.79 %%  Test Loss: 0.326           
epoch: 5 loss: 0.308  Test Accuracy: 92.77 %%  Test Loss: 0.235           
epoch: 6 loss: 0.282  Test Accuracy: 92.79 %%  Test Loss: 0.243           
epoch: 7 loss: 0.262  Test Accuracy: 93.78 %%  Test Loss: 0.209           
epoch: 8 loss: 0.250  Test Accuracy: 93.91 %%  Test Loss: 0.203           
epoch: 9 loss: 0.240  Test Accuracy: 94.03 %%  Test Loss: 0.199           
epoch: 10 loss: 0.226  Test Accuracy: 93.88 %%  Test Loss: 0.196           
epoch: 11 loss: 0.227  Test Accuracy: 93.72 %%  Test Loss: 0.199           
epoch: 12 loss: 0.218  Test Accuracy: 94.05 %%  Test Loss: 0.204           
epoch: 13 loss: 0.200  Test Accuracy: 95.10 %%  Test Loss: 0.168           
epoch: 14 loss: 0.206  Test Accuracy: 94.79 %%  Test Loss: 0.169           
epoch: 15 loss: 0.196  Test Accuracy: 93.98 %%  Test Loss: 0.191           
epoch: 16 loss: 0.190  Test Accuracy: 95.16 %%  Test Loss: 0.158           
epoch: 17 loss: 0.194  Test Accuracy: 95.03 %%  Test Loss: 0.165           
epoch: 18 loss: 0.189  Test Accuracy: 93.57 %%  Test Loss: 0.209           
epoch: 19 loss: 0.181  Test Accuracy: 95.27 %%  Test Loss: 0.158           
epoch: 20 loss: 0.183  Test Accuracy: 95.68 %%  Test Loss: 0.148           
epoch: 21 loss: 0.183  Test Accuracy: 94.40 %%  Test Loss: 0.179           
epoch: 22 loss: 0.181  Test Accuracy: 94.76 %%  Test Loss: 0.180           
epoch: 23 loss: 0.175  Test Accuracy: 94.42 %%  Test Loss: 0.180           
epoch: 24 loss: 0.175  Test Accuracy: 95.25 %%  Test Loss: 0.158           
epoch: 25 loss: 0.165  Test Accuracy: 94.72 %%  Test Loss: 0.175           
epoch: 26 loss: 0.166  Test Accuracy: 94.91 %%  Test Loss: 0.173           
epoch: 27 loss: 0.164  Test Accuracy: 94.91 %%  Test Loss: 0.157           
epoch: 28 loss: 0.164  Test Accuracy: 95.60 %%  Test Loss: 0.145           
epoch: 29 loss: 0.169  Test Accuracy: 93.82 %%  Test Loss: 0.213           
epoch: 30 loss: 0.163  Test Accuracy: 95.81 %%  Test Loss: 0.139           

1.2 Change channel

class Net(torch.nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = GCNConv(2, 16)
        self.conv2 = GCNConv(16, 128)
        self.conv3 = GCNConv(128, 512)
        self.linear = torch.nn.Linear(512, 512)
        self.linear2 = torch.nn.Linear(512, 10)

    def forward(self, data):
        x, edge_index = data.x, data.edge_index
        x = self.conv1(x, edge_index)
        x = F.relu(x)
        x = F.dropout(x, training=self.training)
        x = self.conv2(x, edge_index)
        x = F.relu(x)
        x = F.dropout(x, training=self.training)
        x = self.conv3(x, edge_index)
        x = F.relu(x)
        x = F.dropout(x, training=self.training)
        x, _ = scatter_max(x, data.batch, dim=0)
        action_mean = self.linear(x)
        x = self.linear2(action_mean)
        return x

Output

epoch: 1 loss: 1.472  Test Accuracy: 65.24 %%  Test Loss: 1.006           
epoch: 2 loss: 0.881  Test Accuracy: 78.00 %%  Test Loss: 0.671           
epoch: 3 loss: 0.671  Test Accuracy: 82.65 %%  Test Loss: 0.546           
epoch: 4 loss: 0.555  Test Accuracy: 85.86 %%  Test Loss: 0.447           
epoch: 5 loss: 0.486  Test Accuracy: 86.88 %%  Test Loss: 0.418           
epoch: 6 loss: 0.434  Test Accuracy: 87.71 %%  Test Loss: 0.384           
epoch: 7 loss: 0.415  Test Accuracy: 87.27 %%  Test Loss: 0.379           
epoch: 8 loss: 0.394  Test Accuracy: 89.62 %%  Test Loss: 0.328           
epoch: 9 loss: 0.374  Test Accuracy: 90.03 %%  Test Loss: 0.314           
epoch: 10 loss: 0.360  Test Accuracy: 89.25 %%  Test Loss: 0.329           
epoch: 11 loss: 0.341  Test Accuracy: 90.24 %%  Test Loss: 0.300           
epoch: 12 loss: 0.339  Test Accuracy: 91.68 %%  Test Loss: 0.270           
epoch: 13 loss: 0.310  Test Accuracy: 91.38 %%  Test Loss: 0.277           
epoch: 14 loss: 0.308  Test Accuracy: 88.32 %%  Test Loss: 0.352           
epoch: 15 loss: 0.299  Test Accuracy: 91.20 %%  Test Loss: 0.278           
epoch: 16 loss: 0.297  Test Accuracy: 90.05 %%  Test Loss: 0.303           
epoch: 17 loss: 0.280  Test Accuracy: 92.57 %%  Test Loss: 0.240           
epoch: 18 loss: 0.281  Test Accuracy: 92.48 %%  Test Loss: 0.246           
epoch: 19 loss: 0.271  Test Accuracy: 92.20 %%  Test Loss: 0.243           
epoch: 20 loss: 0.271  Test Accuracy: 93.02 %%  Test Loss: 0.217           
epoch: 21 loss: 0.264  Test Accuracy: 92.10 %%  Test Loss: 0.257           
epoch: 22 loss: 0.262  Test Accuracy: 92.76 %%  Test Loss: 0.226           
epoch: 23 loss: 0.264  Test Accuracy: 92.85 %%  Test Loss: 0.222           
epoch: 24 loss: 0.259  Test Accuracy: 93.21 %%  Test Loss: 0.219           
epoch: 25 loss: 0.249  Test Accuracy: 92.30 %%  Test Loss: 0.254           
epoch: 26 loss: 0.250  Test Accuracy: 92.40 %%  Test Loss: 0.241           
epoch: 27 loss: 0.246  Test Accuracy: 93.26 %%  Test Loss: 0.225           
epoch: 28 loss: 0.242  Test Accuracy: 93.48 %%  Test Loss: 0.216           
epoch: 29 loss: 0.242  Test Accuracy: 93.39 %%  Test Loss: 0.215           
epoch: 30 loss: 0.244  Test Accuracy: 92.83 %%  Test Loss: 0.227           

1.3 Change Linear

class Net(torch.nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = GCNConv(2, 64)
        self.conv2 = GCNConv(64, 256)
        self.conv3 = GCNConv(256, 1024)
        self.linear = torch.nn.Linear(1024, 512)
        self.linear2 = torch.nn.Linear(512, 10)

    def forward(self, data):
        x, edge_index = data.x, data.edge_index
        x = self.conv1(x, edge_index)
        x = F.relu(x)
        x = F.dropout(x, training=self.training)
        x = self.conv2(x, edge_index)
        x = F.relu(x)
        x = F.dropout(x, training=self.training)
        x = self.conv3(x, edge_index)
        x = F.relu(x)
        x = F.dropout(x, training=self.training)
        x, _ = scatter_max(x, data.batch, dim=0)
        action_mean = self.linear(x)
        x = self.linear2(action_mean)
        return x

Output

epoch: 1 loss: 1.250  Test Accuracy: 78.13 %%  Test Loss: 0.663           
epoch: 2 loss: 0.586  Test Accuracy: 86.19 %%  Test Loss: 0.432           
epoch: 3 loss: 0.414  Test Accuracy: 90.19 %%  Test Loss: 0.321           
epoch: 4 loss: 0.337  Test Accuracy: 92.22 %%  Test Loss: 0.258           
epoch: 5 loss: 0.295  Test Accuracy: 91.20 %%  Test Loss: 0.273           
epoch: 6 loss: 0.271  Test Accuracy: 93.45 %%  Test Loss: 0.215           
epoch: 7 loss: 0.256  Test Accuracy: 92.12 %%  Test Loss: 0.262           
epoch: 8 loss: 0.242  Test Accuracy: 93.78 %%  Test Loss: 0.204           
epoch: 9 loss: 0.233  Test Accuracy: 94.60 %%  Test Loss: 0.185           
epoch: 10 loss: 0.225  Test Accuracy: 93.80 %%  Test Loss: 0.213           
epoch: 11 loss: 0.226  Test Accuracy: 91.60 %%  Test Loss: 0.262           
epoch: 12 loss: 0.217  Test Accuracy: 94.44 %%  Test Loss: 0.179           
epoch: 13 loss: 0.212  Test Accuracy: 94.99 %%  Test Loss: 0.179           
epoch: 14 loss: 0.206  Test Accuracy: 94.28 %%  Test Loss: 0.193           
epoch: 15 loss: 0.205  Test Accuracy: 93.70 %%  Test Loss: 0.200           
epoch: 16 loss: 0.192  Test Accuracy: 94.47 %%  Test Loss: 0.186           
epoch: 17 loss: 0.192  Test Accuracy: 95.10 %%  Test Loss: 0.161           
epoch: 18 loss: 0.187  Test Accuracy: 93.66 %%  Test Loss: 0.210           
epoch: 19 loss: 0.186  Test Accuracy: 94.01 %%  Test Loss: 0.200           
epoch: 20 loss: 0.184  Test Accuracy: 95.57 %%  Test Loss: 0.150           
epoch: 21 loss: 0.190  Test Accuracy: 95.52 %%  Test Loss: 0.150           
epoch: 22 loss: 0.173  Test Accuracy: 94.39 %%  Test Loss: 0.178           
epoch: 23 loss: 0.178  Test Accuracy: 94.41 %%  Test Loss: 0.190           
epoch: 24 loss: 0.170  Test Accuracy: 94.87 %%  Test Loss: 0.170           
epoch: 25 loss: 0.177  Test Accuracy: 95.66 %%  Test Loss: 0.143           
epoch: 26 loss: 0.167  Test Accuracy: 94.76 %%  Test Loss: 0.174           
epoch: 27 loss: 0.168  Test Accuracy: 95.22 %%  Test Loss: 0.147           
epoch: 28 loss: 0.168  Test Accuracy: 96.14 %%  Test Loss: 0.129           
epoch: 29 loss: 0.165  Test Accuracy: 95.70 %%  Test Loss: 0.143           
epoch: 30 loss: 0.160  Test Accuracy: 95.86 %%  Test Loss: 0.140

1.4 Add Layer

class Net(torch.nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = GCNConv(2, 16)
        self.conv2 = GCNConv(16, 64)
        self.conv3 = GCNConv(64, 256)
        self.conv4 = GCNConv(256, 512)
        self.linear = torch.nn.Linear(512, 512)
        self.linear2 = torch.nn.Linear(512, 10)

    def forward(self, data):
        x, edge_index = data.x, data.edge_index
        x = self.conv1(x, edge_index)
        x = F.relu(x)
        x = F.dropout(x, training=self.training)
        x = self.conv2(x, edge_index)
        x = F.relu(x)
        x = F.dropout(x, training=self.training)
        x = self.conv3(x, edge_index)
        x = F.relu(x)
        x = F.dropout(x, training=self.training)
        x = self.conv4(x, edge_index)
        x = F.relu(x)
        x = F.dropout(x, training=self.training)
        x, _ = scatter_max(x, data.batch, dim=0)
        action_mean = self.linear(x)
        x = self.linear2(action_mean)
        return x

Output

epoch: 1 loss: 1.427  Test Accuracy: 71.44 %%  Test Loss: 0.855           
epoch: 2 loss: 0.723  Test Accuracy: 80.81 %%  Test Loss: 0.577           
epoch: 3 loss: 0.506  Test Accuracy: 86.76 %%  Test Loss: 0.436           
epoch: 4 loss: 0.427  Test Accuracy: 89.07 %%  Test Loss: 0.352           
epoch: 5 loss: 0.389  Test Accuracy: 90.06 %%  Test Loss: 0.318           
epoch: 6 loss: 0.361  Test Accuracy: 89.33 %%  Test Loss: 0.336           
epoch: 7 loss: 0.336  Test Accuracy: 90.64 %%  Test Loss: 0.318           
epoch: 8 loss: 0.321  Test Accuracy: 90.05 %%  Test Loss: 0.316           
epoch: 9 loss: 0.313  Test Accuracy: 91.52 %%  Test Loss: 0.265           
epoch: 10 loss: 0.299  Test Accuracy: 90.85 %%  Test Loss: 0.303           
epoch: 11 loss: 0.287  Test Accuracy: 92.03 %%  Test Loss: 0.258           
epoch: 12 loss: 0.279  Test Accuracy: 91.43 %%  Test Loss: 0.271           
epoch: 13 loss: 0.276  Test Accuracy: 92.56 %%  Test Loss: 0.238           
epoch: 14 loss: 0.268  Test Accuracy: 92.25 %%  Test Loss: 0.253           
epoch: 15 loss: 0.261  Test Accuracy: 92.45 %%  Test Loss: 0.248           
epoch: 16 loss: 0.254  Test Accuracy: 92.98 %%  Test Loss: 0.218           
epoch: 17 loss: 0.246  Test Accuracy: 93.73 %%  Test Loss: 0.203           
epoch: 18 loss: 0.244  Test Accuracy: 92.39 %%  Test Loss: 0.241           
epoch: 19 loss: 0.243  Test Accuracy: 93.30 %%  Test Loss: 0.216           
epoch: 20 loss: 0.236  Test Accuracy: 93.71 %%  Test Loss: 0.204           
epoch: 21 loss: 0.235  Test Accuracy: 93.94 %%  Test Loss: 0.195           
epoch: 22 loss: 0.228  Test Accuracy: 93.81 %%  Test Loss: 0.196           
epoch: 23 loss: 0.229  Test Accuracy: 93.58 %%  Test Loss: 0.206           
epoch: 24 loss: 0.225  Test Accuracy: 93.66 %%  Test Loss: 0.206           
epoch: 25 loss: 0.222  Test Accuracy: 94.21 %%  Test Loss: 0.187           
epoch: 26 loss: 0.219  Test Accuracy: 92.57 %%  Test Loss: 0.244           
epoch: 27 loss: 0.223  Test Accuracy: 94.35 %%  Test Loss: 0.182           
epoch: 28 loss: 0.210  Test Accuracy: 93.73 %%  Test Loss: 0.202           
epoch: 29 loss: 0.212  Test Accuracy: 94.18 %%  Test Loss: 0.187           
epoch: 30 loss: 0.208  Test Accuracy: 94.16 %%  Test Loss: 0.187 

1.5 Dec Layer

class Net(torch.nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = GCNConv(2, 16)
        self.conv2 = GCNConv(16, 64)
        self.conv3 = GCNConv(64, 256)
        self.conv4 = GCNConv(256, 512)
        self.linear = torch.nn.Linear(512, 512)
        self.linear2 = torch.nn.Linear(512, 10)

    def forward(self, data):
        x, edge_index = data.x, data.edge_index
        x = self.conv1(x, edge_index)
        x = F.relu(x)
        x = F.dropout(x, training=self.training)
        x = self.conv2(x, edge_index)
        x = F.relu(x)
        x = F.dropout(x, training=self.training)
        x = self.conv3(x, edge_index)
        x = F.relu(x)
        x = F.dropout(x, training=self.training)
        x = self.conv4(x, edge_index)
        x = F.relu(x)
        x = F.dropout(x, training=self.training)
        x, _ = scatter_max(x, data.batch, dim=0)
        action_mean = self.linear(x)
        x = self.linear2(action_mean)
        return x

Output

epoch: 1 loss: 1.294  Test Accuracy: 73.58 %%  Test Loss: 0.827           
epoch: 2 loss: 0.765  Test Accuracy: 80.89 %%  Test Loss: 0.593           
epoch: 3 loss: 0.600  Test Accuracy: 84.10 %%  Test Loss: 0.498           
epoch: 4 loss: 0.532  Test Accuracy: 85.91 %%  Test Loss: 0.436           
epoch: 5 loss: 0.474  Test Accuracy: 86.62 %%  Test Loss: 0.429           
epoch: 6 loss: 0.428  Test Accuracy: 88.02 %%  Test Loss: 0.378           
epoch: 7 loss: 0.389  Test Accuracy: 90.22 %%  Test Loss: 0.316           
epoch: 8 loss: 0.370  Test Accuracy: 89.78 %%  Test Loss: 0.332           
epoch: 9 loss: 0.345  Test Accuracy: 91.19 %%  Test Loss: 0.281           
epoch: 10 loss: 0.325  Test Accuracy: 89.05 %%  Test Loss: 0.340           
epoch: 11 loss: 0.307  Test Accuracy: 92.12 %%  Test Loss: 0.261           
epoch: 12 loss: 0.294  Test Accuracy: 92.69 %%  Test Loss: 0.231           
epoch: 13 loss: 0.274  Test Accuracy: 91.27 %%  Test Loss: 0.297           
epoch: 14 loss: 0.272  Test Accuracy: 93.50 %%  Test Loss: 0.215           
epoch: 15 loss: 0.264  Test Accuracy: 92.89 %%  Test Loss: 0.238           
epoch: 16 loss: 0.257  Test Accuracy: 93.26 %%  Test Loss: 0.215           
epoch: 17 loss: 0.249  Test Accuracy: 91.77 %%  Test Loss: 0.269           
epoch: 18 loss: 0.251  Test Accuracy: 92.26 %%  Test Loss: 0.248           
epoch: 19 loss: 0.246  Test Accuracy: 92.76 %%  Test Loss: 0.231           
epoch: 20 loss: 0.243  Test Accuracy: 92.68 %%  Test Loss: 0.230           
epoch: 21 loss: 0.237  Test Accuracy: 93.94 %%  Test Loss: 0.194           
epoch: 22 loss: 0.229  Test Accuracy: 93.74 %%  Test Loss: 0.205           
epoch: 23 loss: 0.230  Test Accuracy: 91.84 %%  Test Loss: 0.262           
epoch: 24 loss: 0.228  Test Accuracy: 93.90 %%  Test Loss: 0.190           
epoch: 25 loss: 0.221  Test Accuracy: 94.03 %%  Test Loss: 0.195           
epoch: 26 loss: 0.218  Test Accuracy: 94.27 %%  Test Loss: 0.194           
epoch: 27 loss: 0.217  Test Accuracy: 94.02 %%  Test Loss: 0.189           
epoch: 28 loss: 0.221  Test Accuracy: 94.17 %%  Test Loss: 0.187           
epoch: 29 loss: 0.215  Test Accuracy: 94.27 %%  Test Loss: 0.188           
epoch: 30 loss: 0.212  Test Accuracy: 94.44 %%  Test Loss: 0.190  

猜你喜欢

转载自blog.csdn.net/weixin_45084253/article/details/128042956
GCN
今日推荐