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
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
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
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
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
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)