要用一下transR的python代码实现,想在网上找一下源码,下面记录一下过程。
试过pykg2vec和pykeen这两个第三方库,但是本人小白,感觉用不来这两个工具,而且网上的技术文档也不多,可能适合有一定深度学习代码经验的人来用。目前选择了openKE这个开源工具包。下面是这个openke的官网和github地址。
http://nlp.csai.tsinghua.edu.cn/project/openke/
https://github.com/thunlp/OpenKE
OpenKE是THUNLP基于TensorFlow、PyTorch开发的用于将知识图谱嵌入到低维连续向量空间进行表示的开源框架。OpenKE提供了快速且稳定的各类接口,也实现了诸多经典的知识表示学习模型。
对于我来说,openKE不仅提供了transR模型的代码,更重要的是它提供了各种模型训练过程的实例,对于DL小白来说,手写训练过程还是有点困难的。
然后我的环境是:win10、python==3.7、tensorflow==2.4.0、torch==1.13.1+cull7(GPU版)、numpy==1.19.5、显卡Geforce GTX 1080、cuda==11.7.101
在我这个环境下,使用这个代码需要修改一下:
trainDataLoader.py,line105-108:把int64位换成32位

testDataLoader.py,line70:同样把64位换成32位

不改的话会报错IndexError: index out of range in self。因为openKE是调用了C++的.so接口,应该是底层的数据存储不一致导致的。我调试的时候分别打印了python端和C++端的变量地址和二进制码
再有就是根据自己的显存大小需要调整batchSize和threadsNum,不然可能会报错out of memory
整体来说这个代码对于小白很友好,不需要做太多调整。