目录
- 前言
- 1.安装NeuralKG
- 2.运行demo.py出现的问题及解决方案
- 2.1 UnicodeDecodeError: 'gbk' codec can't decode byte exad in position 4: illegal multibyte sequence
- 2.2 AttributeError: Can't pickle local object 'ArgumentParser.__init__.<locals>.identity'
- 2.3 OSError: [Errno 22] Invalid argunent: "D:/pycharnproject/NeuralKG-nain/output/link_prediction/deno_kg/TransE/epoch=1-Eval nrr:8.181.ckpt
- 3.向量表示与预测
前言
记录NeuralKG的安装和使用,以及解决windows系统下的运行demo.py出现的问题。下载NeuralKG源码:https://github.com/zjukg/NeuralKG
1.安装NeuralKG
这里是主要按照readme文档安装的。
Step1 使用 Anaconda 创建虚拟环境,并进入虚拟环境
conda create -n neuralkg python=3.8
conda activate neuralkg
Step2 下载适用您CUDA版本的的PyTorch的DGL,我下载的适用cuda10.2:
下载PyTorch
conda install pytorch==1.9.1 torchvision==0.10.1 torchaudio==0.9.1 cudatoolkit=10.2 -c pytorch
下载DGL
pip install dgl-cu102 dglgo -f https://data.dgl.ai/wheels/repo.html
Step3 安装NeuralKG
pip install neuralkg
2.运行demo.py出现的问题及解决方案
切换到neuralkg环境下:
conda activate neuralkg
在NeuralKG-main文件夹下运行:
python demo.py
因为作者提供的demo.py用本机windows会出一些问题,需要改进代码,我这里主要改了三个地方:
2.1 UnicodeDecodeError: ‘gbk’ codec can’t decode byte exad in position 4: illegal multibyte sequence
问题:
解决方案:根据提示找到D:\anaconda\envs\neuralkg\lib\site-packages\neuralkg\data\DataPreprocess.py文件,在打开文件时,加上encoding=‘utf-8‘:
2.2 AttributeError: Can’t pickle local object ‘ArgumentParser.init..identity’
问题:解决方案:
TransE_demo_kg.yaml中将num_workers值改为0
2.3 OSError: [Errno 22] Invalid argunent: "D:/pycharnproject/NeuralKG-nain/output/link_prediction/deno_kg/TransE/epoch=1-Eval nrr:8.181.ckpt
问题:
解决方案:
demo.py中将文件名Eval|mrr改为Eval_mrr(windows文件命名中不支持|):
# 一级标题
3.向量表示与预测
3.1 获取向量表示
每轮验证完成后,NeuralKG会在主目录下的’output’文件夹按照模型类别自动生成当前实验验证效果最好的checkpoint。它包含了实验的基本信息以及模型的embedding,可以通过pytorch的load函数加载模型获取这些信息。在demo.py中加上:
#向量表示
model = torch.load(path)# path为epoch=xxx-Eval|mrr=x.xxx.ckpt'
rel_emb = model['state_dict']['model.rel_emb.weight']
ent_emb = model['state_dict']['model.ent_emb.weight']
print(rel_emb)
print(ent_emb)
向量表示结果:
3.2 链接预测
demo.py文件中有预测代码,结果: