liuxiyang641 / RAGAT

RAGAT: Relation Aware Graph Attention Network for Knowledge Graph Completion
56 stars 16 forks source link

关于嵌入层的疑惑 #26

Closed 1FreshChen closed 5 months ago

1FreshChen commented 5 months ago

学长您好,我想请教下,对于实体和关系的嵌入是如何进行的,进行的随机初始化是针对所有的实体和关系么,模型的嵌入层或者有用到编码器么?我如果修改了随机初始化嵌入是否意味着就已经改变了实体和关系的嵌入方式?

liuxiyang641 commented 5 months ago

实体和关系嵌入是随机初始化的,然后经过训练优化。修改随机初始化,不会影响后续它们在网络中的计算过程。但是效果肯定会受到影响。

1FreshChen commented 5 months ago

那这个过程是不是就是对应了嵌入层?另外我还想请教下有的架构上是编码器解码器的框架 嵌入和编码的含义相同么 RAGAT 有涉及到么

liuxiyang641 commented 5 months ago
  1. 嵌入层只是指根据实体或关系的id,检索得到对应的embedding,没有计算过程。初始化embedding都是在model class初始化的时候就执行了。它们之后的计算是依赖于网络结构的。
  2. 编码是个比较大的概念,简单理解就是对输入信息的处理过程,除了把输入转化为数值形式(嵌入层),还有各种操作(RAGAT的GNN网络)。解码器是指把数值形式再转化为输出形式,在链路预测中指根据学习到的embedding输出预测结果。RAGAT就是编码器-解码器架构。
1FreshChen commented 5 months ago

1、那初始化的embedding是否是针对每一个实体和关系的 还是说共用同一个初始化embedding 2、如果想要利用bert等语言模型实现实体和关系的嵌入 是否就是意味着修改随机初始化的过程

liuxiyang641 commented 5 months ago
  1. 当然是每个实体或关系的初始化embedding都不一样
  2. 如果直接用BERT的embedding来作为初始化embedding,自然不再属于随机初始化了
1FreshChen commented 5 months ago

好的谢谢学长

1FreshChen commented 5 months ago

学长我想请教下跑完checkpoints下只有testrun开头的文件 但是没有test_fb开头的文件是什么原因呀 重新加载好像是要test_fb开头的文件

liuxiyang641 commented 5 months ago

描述不太清楚,你的输入命令是什么?有没有截图?

1FreshChen commented 5 months ago

{6AB9A02A-CD5A-4f24-9F6A-878DBBB0D841} {B0DA2435-837B-4604-8985-D68558DBC352} 输入的命令是python run.py -restore -epoch 0 -name checkpoints下的文件名 -model ragat -score_func interacte -opn cross -gpu 0 -data MY -gcn_drop 0.4 -ifeat_drop 0.4 -ihid_drop 0.3 -batch 1024 -iker_sz 9 -attention True -head_num 2

liuxiyang641 commented 5 months ago

为什么你加载训练好的checkpoint路径里会有两个\符号?应该是这个地方出错了