Closed coder-yzh closed 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)下半部分的常数实际上也可以省略。
我有点省略过头了,造成了理解上的困难,过两天我会把他改掉的,谢谢关注和提醒。
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])])