Java教程

openKE中的TransE安装尝试

本文主要是介绍openKE中的TransE安装尝试,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

纯个人记录过程,写的十分冗余!!! =-=

尝试1

先尝试能不能安装上openKE
1.网址:https://blog.csdn.net/wangdong1106/article/details/109597447
先下载了pthread for windows,按照文中说的过程配置完成
2.随后去openKE官网上拉下来openKE
http://139.129.163.161/static/notes/installation.html
在拉的过程中遇到两个问题,第一个是
在这里插入图片描述
解决方法是输入命令:

git config --global http.sslVerify "false"

另一个问题是
在这里插入图片描述
这个的原因应该是因为网络的原因,出现这个问题的时候git也登不上去,等能登上去的时候就解决问题了…

然后在openKE的base里新建visual studio的dll类型C++文件,过程为文件—新建—-项目—Win32控制台应用程序。应用程序类型选中DLL(D), 点击完成。

之后按照上面链接的文章中去修改配置,但是感觉这个不是调用这个包而是直接使用它的example

╰(°▽°)╯!example!对啊,可以参考example中是如何调用包的,然后仿照调用就可以了!那就可以尝试直接去看TransE的example

尝试2

官网直接有一个模块介绍如何得到embedding matrix:

既然在windows上安装很困难,尝试去服务器上做

在服务器上按照官网的步骤
将openKE拉下来,进入到openke文件夹中,运行bash make.sh,按照他需要的格式准备好3个数据集(先用它给的),然后在openke文件夹下新建一个训练模型的python文件,具体代码在官网中,在运行该代码的时候提示没有pytoch,于是配置pytorch环境,具体见这篇文章

尝试3

1 登录linux服务器,在服务器上将OpenKE拉下来,编译C++文件

git clone https://github.com/thunlp/OpenKE
cd OpenKE
cd openke
bash make.sh

2 在服务器上配置pytorch和cuda,因为在服务器上我没有root权限,参考文章【1】

具体操作为:
1)输入nvidia-smi查看自己的显卡驱动版本以及支持的最大CUDA版本,我的如下:

有一些教程里会有如何升级显卡驱动等,但因为我没有root权限,就直接对照着表格,选择了CUDA10.0的版本
在这里插入图片描述
2)输入uname -a与cat /proc/version查看系统的信息,查找到Ubuntu的版本号,我的版本号是16.04,进入英伟达CUDA下载页面,选择适合系统的toolkit下载,选择下图中的runfile(local),下方将出现下载的按钮,Download Base Installer,下载到本地再通过winSCP传到服务器上
在这里插入图片描述
在这里插入图片描述
3)通过网址下载CUDNN,根据自己的cuda的版本选择下载,我下载的是下图框出来的,将下载后的.tar文件也上传到服务器上
在这里插入图片描述
4)安装CUDA
给cuda加可执行权限,并运行run文件

chmod +x cuda_10.0.130_410.48_linux.run
sh cuda_10.0.130_410.48_linux.run

一直按回车阅读到100%,弹出是否accept,输入accept,其中nvidia accelerated graphics driver和一个samples.选no,其他都选yes,其中有让输入路径的选择自己知道的路径就可,最好不要把路径命名为cuda,因为之后解压tar文件会解压出一个cuda,如下:
在这里插入图片描述
成功后会显示如下界面
在这里插入图片描述
5)修改环境变量
输入vim ~/.bashrc,添加以下代码:(其中你的路径就是在上一步安装的时候你输入的路径)

export CUDA_HOME=$CUDA_HOME:你的路径
export PATH=$PATH:你的路径/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:你的路径/lib64

保存后输入source ~/.bashrc

6)安装CUDNN
解压cudnn:

tar -zxvf cudnn-10.0-linux-x64-v7.6.5.32.tgz

此时目录中有一个cuda文件夹,把文件复制到cuda文件夹中

cp cuda/include/cudnn.h 你的路径/include/
cp cuda/lib64/libcudnn* 你的路径/lib64/

修改权限,cudnn安装完成

chmod a+r 你的路径/include/cudnn.h 你的路径/lib64/libcudnn*

输入nvcc -v查看是否安装成功
在这里插入图片描述

7)由于我的服务器里安装了anaconda,所以这里没有这部分内容,安装pytorch就是在官网中找到对应的版本执行命令

conda install pytorch torchvision cudatoolkit=10.0

此时输入python,执行import torch是可以的,但是遇到一个问题就是torch.cuda.is_available()返回结果为False,解决方法见此文章

3 按照openke的github中的Installation的步骤一步一步操作(其中前三步之前已经做完了)

cd ../
cp examples/train_transe_FB15K237.py ./
python train_transe_FB15K237.py

报错

ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22’ not found

解决该问题尝试1:升级gcc
升级的过程中有一个make的步骤,需要很长时间大概4个小时吧,但是执行make install时由于没有在一些位置创建文件的权限导致不成功

尝试2:降低scipy版本,我用conda install scipy==1.3.1报错如下,改用为pip install scipy==1.3.1
在这里插入图片描述
运行时报错
在这里插入图片描述
尝试更新了pip以及安装,但仍然报错,有文章说可以通过sudo apt-get install gfortran来解决,但无权限

pip install --upgrade pip setuptools wheel
pip install p5py
pip install PEP517

尝试4

因为之前这些都是在自己的新建的一个虚拟环境下安装的,后来退回到base环境,上面的那个错误居然消失了,但是base环境没有cuda,重新安装尝试一下,还是报错

尝试5

对不起了兄弟们,换了个服务器,好了,运行的时候遇到了无法编译c的问题,把之前这个服务器生成的openke/release文件夹直接拷贝过去了,目前的报错是
在这里插入图片描述
这个问题的解决方法见这篇文章

最后终于跑通了
在这里插入图片描述
最后又出了一个小小的问题,在OpenKE里新建一个checkpoint文件夹就好了~
在这里插入图片描述
得到transE后的向量的代码为:

embeddings = transe.get_parameters("list")
embeddings = json.dumps(embeddings)
with open('xy1train.txt', 'w') as f:
    f.write(embeddings)

运行自己的数据时出现了一个问题,因为我的数据中并不是所有的entity都用到了train2id.txt中,所以我将没有用到的相关的entity数据在entity2id.txt中删掉了,但是这样就跑不通报错如下图,解决方法就是将所有的entity数据都加回来了,个人推测可能是因为entity的id是从0排序的,里面可能使用了一些什么机制导致如果不连号的话就会报错
最后可以将不连续的删掉,只要entity的id是连续的就可以了

后来对config中的Trainer.py进行了修改,新建Trainer3.py,运行时报错如下
在这里插入图片描述
解决方法是将train_transe_xy3.py中的

from openke.config import Trainer, Tester
改成了
from openke.config.Trainer3 import Trainer3
这篇关于openKE中的TransE安装尝试的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!