def forward(self, data):
     x = forward_op(data.node_feature, self.dropouts1)
     x = forward_op(x, self.relus1)
     x = self.conv1(x, data.edge_index)
     x = forward_op(x, self.dropouts2)
     x = forward_op(x, self.relus2)
     x = self.conv2(x, data.edge_index)
     return x
Exemplo n.º 2
0
 def forward(self, data):
     x = forward_op(data.node_feature, F.dropout, p=self.dropout, training=self.training)
     x = forward_op(x, F.relu)
     x = self.conv1(x, data.edge_index)
     x = forward_op(x, F.dropout, p=self.dropout, training=self.training)
     x = forward_op(x, F.relu)
     x = self.conv2(x, data.edge_index)
     return x
Exemplo n.º 3
0
 def forward(self, node_feature, edge_index):
     x = node_feature
     x = self.convs1(x, edge_index)
     x = forward_op(x, self.bns1)
     x = forward_op(x, self.relus1)
     x = self.convs2(x, edge_index)
     x = forward_op(x, self.bns2)
     x = forward_op(x, self.relus2)
     x = forward_op(x, self.post_mps)
     return x
Exemplo n.º 4
0
    def forward(self, data):
        x = forward_op(data.node_feature, self.dropout1)
        x = forward_op(x, self.relu1)
        x = self.conv1(x, data.edge_index)
        x = forward_op(x, self.dropout2)
        x = forward_op(x, self.relu2)
        x = self.conv2(x, data.edge_index)

        pred = {}
        for message_type in data.edge_label_index:
            nodes_first = torch.index_select(
                x['n1'], 0, data.edge_label_index[message_type][0, :].long())
            nodes_second = torch.index_select(
                x['n1'], 0, data.edge_label_index[message_type][1, :].long())
            pred[message_type] = torch.sum(nodes_first * nodes_second, dim=-1)
        return pred
Exemplo n.º 5
0
    def forward(self, data):
        x = data.node_feature
        edge_index = data.edge_index
        x = self.convs1(x, edge_index)
        x = forward_op(x, self.bns1)
        x = forward_op(x, self.relus1)
        x = self.convs2(x, edge_index)
        x = forward_op(x, self.bns2)

        pred = {}
        for message_type in data.edge_label_index:
            nodes_first = torch.index_select(
                x['n1'], 0, data.edge_label_index[message_type][0, :].long())
            nodes_second = torch.index_select(
                x['n1'], 0, data.edge_label_index[message_type][1, :].long())
            pred[message_type] = torch.sum(nodes_first * nodes_second, dim=-1)
        return pred
Exemplo n.º 6
0
    def test_hetero_gnn_forward(self):
        xs = {}
        layers = nn.ModuleDict()
        emb_dim = 5
        feat_dim = 10
        num_samples = 8
        keys = ['a', 'b', 'c']

        for key in keys:
            layers[key] = nn.Linear(feat_dim, emb_dim)
            xs[key] = torch.ones(num_samples, feat_dim)

        ys = forward_op(xs, layers)
        for key in keys:
            self.assertEqual(ys[key].shape[0], num_samples)
            self.assertEqual(ys[key].shape[1], emb_dim)