【论文代码复现】Translating Embeddings for Modeling Multi-relational Data中TransE代码实现+遇到的错误


本文创建初心:想为看Translating Embeddings for Modeling Multi-relational Data这篇文章的人提供一个完整的资源与遇到的情况的一个汇总

【注】
本文的代码来源于GitHub上面一位优秀的博主,所有的相关链接都会展现出来。
本文的运行环境是VScode,因为pychram被我搞坏了,短时间不想下载,所以采用VScode进行学习(题外话:VScode真香)


1、相关链接

论文出处:论文原文链接
pdf链接:pdf直接下载
论文解析(之前写过的一篇解析博客):Translating Embeddings for Modeling Multi-relational Data
代码出处:transE - 大佬的Github


2、代码报错汇总

直接把上面Github的代码载入VScode中,先运行transE_pytorch.py文件。

2.1、报错:AssertionError: Torch not compiled with CUDA enabled

图1:报错显示

相关解决链接:其他博主文章

转载:

此错误是由于下载的torch没有cuda,在运行时就会出错,经过查阅,在程序最开始的地方加上:device = torch.device(“cuda” if torch.cuda.is_available() else “cpu”)
代码其余地方出现.cuda()的地方改成.to(device)就可以在无gpu的环境中运行了。

这个修改的时候VScode非常爽,可以一口气全部修改:
鼠标选中要修改的位置→右键→更改所有匹配项
在这里插入图片描述

2.2、TransE部分报错(憨憨报错)

上面那个问题改正以后,还是报错,而且错误报错的位置是TransE那一块,所以我发现,我的transE代码并没有运行,所以说先运行transE代码
图1:多少的

2.3、文件找不到

修改前:
在这里插入图片描述
修改后:
在这里插入图片描述

3、运行结果截图

transE_pytorch.py:
在这里插入图片描述

4、完整代码+注释

这一部分等我把代码全部跑完了在发上来,暂时空缺

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 19
    评论
对于基于TransE或类似模型进行推理,通常可以采用以下步骤: 1. 构建知识图谱:将知识库的实体和关系抽象成节点和边,构建一个图谱。 2. 训练TransE模型:使用知识图谱作为输入,训练TransE模型来学习实体之间的关系。 3. 进行推理:通过查找知识图谱的实体和关系,进行推理。 其,比较关键的是如何训练TransE模型。TransE模型的核心思想是将实体和关系映射到同一向量空间,从而在向量空间计算它们之间的相似度。在训练阶段,需要最小化实体和关系之间的距离,使得真实的三元组距离近,而虚假的三元组距离远。相似度可以使用余弦相似度或点积等函数计算,具体实现可参考论文TransE: Translating Embeddings for Modeling Multi-relational Data》。 下面给出一个简单的例子:假设有一个知识库包含以下三元组: (Tom, hasChild, Harry) (Tom, hasChild, Lily) (Lily, sibling, Harry) 使用TransE模型,我们可以将Tom、Harry和Lily分别映射到向量空间的三个向量,然后通过计算向量之间的距离,来推理Tom是否是Harry的父亲。具体过程如下: 1. 将实体和关系映射到向量空间: Tom -> (0, 0) Harry -> (2, 0) Lily -> (1, 1) hasChild -> (1, 0) sibling -> (0, 1) 2. 通过向量之间的距离计算相似度: sim(Tom, hasChild, Harry) = cos((0+1-2)/3) ≈ -0.63 sim(Tom, hasChild, Lily) = cos((0+1-1)/3) ≈ 0.33 sim(Tom, sibling, Harry) = cos((0-1-2)/3) ≈ -0.94 由此可见,Tom与Harry之间的相似度较低,因此不能推断Tom是Harry的父亲。而Tom与Lily之间的相似度较高,说明Tom是Lily的父亲。
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bessie_Lee_gogogo

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值