MaoXinn / SEU

30 stars 4 forks source link

about the relational adjacency matrix #3

Closed coder-yzh closed 2 years ago

coder-yzh commented 2 years ago

Hello, I would like to ask about the definition of aij, among which aij, there is no division relationship,append [i,i,np.log(len(all_triples)/node_size)] and [h,t,np.log(len(all_triples)/dr[r])] to sparse_rel_matrix,but not [i,i,np.log(len(all_triples)/node_size)]/[h,t,np.log(len(all_triples)/dr[r])], I will be very grateful if I can receive your reply for i in range(node_size): sparse_rel_matrix.append([i,i,np.log(len(all_triples)/node_size)]); for h,r,t in all_triples: sparse_rel_matrix.append([h,t,np.log(len(all_triples)/dr[r])]) 1649583256

MaoXinn commented 2 years ago

很抱歉现在才回复,之前github好像没有推送给我。 这个代码确实不太好理解,因为利用了一些tf的奇葩特性......

tf中的sparse矩阵是允许index重复的。 举个例子,如下sparse矩阵是合法的: index : [(0,0), [1,1], [1,1]] value: [2, 3, 4] 它等价于稠密矩阵: [ 2, 0] [ 0, 7] 重复项会被加在一起,因此我代码里可以省略公式(12)的上半部分求和。

此外,在矩阵乘法之后实体向量会被l2标准化,由于l2_norm(x/c) = l2_norm(x), 所以公式(12)下半部分的常数实际上也可以省略。

我有点省略过头了,造成了理解上的困难,过两天我会把他改掉的,谢谢关注和提醒。