GANA-FewShotKGC icon indicating copy to clipboard operation
GANA-FewShotKGC copied to clipboard

SIGIR2021: Relational Learning with Gated and Attentive Neighbor Aggregator for Few-Shot Knowledge Graph Completion

Results 14 GANA-FewShotKGC issues
Sort by recently updated
recently updated
newest added

细节问题就不说了,说主要的部分: 1. 实验设置问题:论文中使用的数据集的描述是MetaR的Pre-train设置下的数据集,在main_gana.py的line 27直接设置为In-Train导致参数data_from设置仅设置了实体嵌入的初始化是使用预嵌入的还是随机初始化的。 2. 邻居编码和门控部分:论文中公式1, 2涉及实体邻居编码部分,代码中的Bias,relu的顺序和论文中的不符合,邻居注意力的过程中没有对dummy邻居进行mask,公式5的bias也没有,如果是用nn.Linear自带的Bias会导致bias与门控关联。对应于model_gana.py的line 161~line 170。 3. 关系表示聚合部分:公式中是对每一个LSTM的隐层输出做注意力机制加权求和,代码中用few+1步的最后隐层输出对前面few个relation输出求注意力加权求和。公式11~ 公式13论文和代码完全对不上。对应于model_gana.py的line 59 ~ line 65。 4. MTransH部分:论文公式14与代码实现不符,根据TransH的原理,代码部分应该是正确的,应该是写作疏忽。然而,公式19描述的超平面梯度更新在代码model_gana.py的line 226中使用的是关系梯度进行的梯度更新。 在按照[作者提供的设置](https://github.com/ngl567/GANA-FewShotKGC/issues/13#issuecomment-1127150204)上用NELL数据集尝试了许多代码,结果如下: - 修改TransH中超平面的更新为论文中的更新方式,MRR的性能由0.320左右下降至0.290左右 - 将邻居编码器的mask和关系聚合方式修改为论文中的描述,MRR性能在0.300~0.320左右 - 如果严格按照MetaR中的Pre-Train实验设置,MRR的性能大约在0.270以下 作者得到的结果应该是在In-Train设置下得到的结果,根据[MetaR](https://github.com/AnselCmy/MetaR) 提供的结果(该结果可被复现),In-Train设置下NELL的结果更好,比MetaR原始论文报告好很多。In-Train设置下,MetaR在WIKI上确实受到噪声影响,这个工作Gate的提出也是基于这个motivation。于是跑了WIKI数据,MRR在0.290左右,相比于MetaR确实显著提升。 总结: 1....

你好,我有两点问题比较疑惑,一是原文的公式 (14) 和你们公布的代码中的写法不一致,我把代码的写法修改为论文中的公式后,运行得到的结果反而更差了;二是跑了多次代码效果均没有达到论文所公布的结果,是不是有什么参数设置或者是一些细节被我我忽略了?希望能够得到解答,谢谢!

你好,不好意思又来提问了,代码里有个地方实在是有点看不明白,希望能够给一点解答。 在 model_gana.py 的 neighbor_encoder 函数里,第四行 `entself = connections[:,0,0].squeeze(-1)`,如果我没有理解错的话,entself 代表的是 support set 中的头、尾实体,这个代码用来取的是 entself 的值,我个人感觉应该是错误的。connections 只包含了邻居节点的信息,并且 ` [:,0,0] ` 取的也应该是关系而不是实体。 希望能够得到答复。再三打扰了,烦请指教。

运行到这儿就报错了,大佬可以重新修改一下代码吗;数据集有些小出入我都修改了,不知道改没改对,代码里的设置也没有按照论文进行设置,照搬的metaR,这样很难复现结果呀

gate_tem = self.gate_w(out_attn) + self.gate_b gate = torch.sigmoid(gate_tem) out_neighbor = torch.mul(out_attn, gate) out_neighbor = out_neighbor + entself_embeds 这里一个是 bs*100 一个是bs*50*100 是因为我中间的参数没有设置,还是因为什么问题呢 请大佬们在不忙的时候,帮忙解决一下,谢谢

大佬能发一下这个数据集split成1-N和N-N及N-1的数据集代码么

请问我运行您的代码出现了错误 RuntimeError: margin_ranking_loss : All input tensors should have same dimension but got sizes: input1: torch.Size([1024, 3]), input2: torch.Size([1024, 3]), target: torch.Size([1]) ,我查阅了方法的源码形参要求维度都保持一致,但是您模型里面调用方法的维度好像是不一致的 y = torch.Tensor([1]).to(self.device) loss = self.loss_func(p_score, n_score,...

Dear Authors: There are some issues with the implementation of GANA: Non-reproducible results, In-Train setting rather than Pre-Train setting, and inconsistencies between paper and code. **1. Reproducibility** The results are...

dataform的["Pre-Train", "In-Train", "Discard"]分别代表什么意思啊。