Implementaion about knowledge graph attention

Hi,
Hi, I’d like to implement the function as follows:
image
image
That is, I need to calculate the attention alpha between the head entity and relations, and need to calculate the attention belta between relation and tail entity.
So, How can I use dgl to implement attention score in terms of a part of neighbors, not all neighbors?
Note: I can implement it in the numerator, but it’s not clear how do I compute the denominator
image
image
The above is the explanation of the Dimension of the tensor in the softmax function where num_edge is the number of all edge_index.

I find it difficult to compute alpha and beta at the same time. If I filter index via edge_type, that is I focus on the subgraph about relation_i. Then beta attention could be implemented while alpha is still hard to address.
For example, if I mask edge_type i, then in the self.propagate, the edge_index is all about r_i. So as for attention alpha, I couldn’t know the other relations which are the neighbors about entity u.

The desired final result shows below:
For example:
attention_{e_1,e_2} = alpha_{e_1,r_1} * beta_{r_1,e_2}


Looking forward to your help! Thanks a lot!

So, alpha is across relation softmax and beta is wthin relation softmax, right?
You need to implement a UDF aggregaion funcion in DGL.

I was a little bit confused by the notations, could you please kindly provide the original paper you referred to?

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.