日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

ConvE,知识图谱嵌入(KGE)论文复现(Ubuntu 20.04)

發布時間:2024/3/13 Ubuntu 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ConvE,知识图谱嵌入(KGE)论文复现(Ubuntu 20.04) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ConvE,知識圖譜嵌入(KGE)論文復現(Ubuntu 20.04)


Paper:Convolutional 2D Knowledge Graph Embeddings


準備工作

GitHub地址,打開如下,下拉按照說明來復現模型

克隆項目到本地

git clone git@github.com:TimDettmers/ConvE.git


操作步驟

一. 安裝與配置

1. Install PyTorch using Anaconda.

參照我的兩篇博文:

1. WIN 11 安裝 Ubuntu 20.04 (雙系統)(2022.02.28)
2. Ubuntu 20.04 系統下(子系統)深度學習環境配置(Pytorch + GPU)

對于anaconda的安裝,可以參考如下博文中安裝anaconda3和環境變量部分的內容,其他不要多看,因為我的環境是雙系統下的Ubuntu系統,而不是在虛擬機中進行的:

VMware 中 Ubuntu 20.04 安裝 和 Pytorch 1.10.2 環境配置(2022.02.10)


2. Install the requirements pip install -r requirements.txt

執行以下命令:

cd ConvE pip install -r requirements.txt

出現錯誤,執行以下命令,大家根據自己情況而定:

pip install --upgrade pip pip install PyHamcrest pip install --upgrade pip


再轉頭來執行命令:pip install -r requirements.txt,顯示安裝成功,圖太長,截最后一部分:


3. Download the default English model used by spaCy, which is installed in the previous step python -m spacy download en_core_web_sm

首先,手動下載需要的語言模型:點擊進入,如下圖所示,點擊 tag
使用 next 翻頁找到 en_core_web_sm-3.2.0 這個包,點進去:
選擇 en_core_web_sm-3.2.0.tar.gz 下載:

下載后,執行命令:pip install en_core_web_sm-3.2.0.tar.gz,如下圖所示


然后,對應下載合適的 spacy 版本, 我安裝的是3.2.0版本,在自己的 conda 虛擬環境中執行命令(我默認的清華源安裝,其他的應該也可以):

pip install spacy==3.2.0


4. Run the preprocessing script for WN18RR, FB15k-237, YAGO3-10, UMLS, Kinship, and Nations: sh preprocess.sh

執行以下命令:

cd ConvE sh preprocess.sh


二. 在 FB15k-237 數據集上跑 ConvE 模型

執行以下命令:

CUDA_VISIBLE_DEVICES=0 python main.py --model conve --data FB15k-237 \--input-drop 0.2 --hidden-drop 0.3 --feat-drop 0.2 \--lr 0.003 --preprocess

報錯:
原因:

從 Spacy V3.0 開始,該導入模塊的方式已被棄用,因此要使用 spacy 模型,需要更改代碼

解決:

import spacy 替換為 from spacy.lang.en import English
nlp=spacy.load('en') 替換為 nlp = English()


再次執行以下命令,成功:

CUDA_VISIBLE_DEVICES=0 python main.py --model conve --data FB15k-237 \--input-drop 0.2 --hidden-drop 0.3 --feat-drop 0.2 \--lr 0.003 --preprocess

中間部分過程,截圖如下:
歷經最少 12 小時吧,結果如下:


三. 在其它數據集上跑 ConvE 及其它兩個模型

CUDA_VISIBLE_DEVICES=0 python main.py --model conve --data FB15k-237 \--input-drop 0.2 --hidden-drop 0.3 --feat-drop 0.2 \--lr 0.003 --preprocess

改變 --data 后的 FB15k-237 為下列數據集的任何一個:

WN18RR YAGO3-10 umls kinship nations

改變 --model 后的 convE 為下列數據集的任何一個:

distmult complex

四. 參數使用和注意事項

關于知識圖譜的鏈接預測任務,在訓練時的可選參數及含義:

-h, --help show this help message and exit--batch-size BATCH_SIZEinput batch size for training (default: 128)--test-batch-size TEST_BATCH_SIZEinput batch size for testing/validation (default: 128)--epochs EPOCHS number of epochs to train (default: 1000)--lr LR learning rate (default: 0.003)--seed S random seed (default: 17)--log-interval LOG_INTERVALhow many batches to wait before logging trainingstatus--data DATA Dataset to use: {FB15k-237, YAGO3-10, WN18RR, umls,nations, kinship}, default: FB15k-237--l2 L2 Weight decay value to use in the optimizer. Default:0.0--model MODEL Choose from: {conve, distmult, complex}--embedding-dim EMBEDDING_DIMThe embedding dimension (1D). Default: 200--embedding-shape1 EMBEDDING_SHAPE1The first dimension of the reshaped 2D embedding. Thesecond dimension is infered. Default: 20--hidden-drop HIDDEN_DROPDropout for the hidden layer. Default: 0.3.--input-drop INPUT_DROPDropout for the input embeddings. Default: 0.2.--feat-drop FEAT_DROPDropout for the convolutional features. Default: 0.2.--lr-decay LR_DECAY Decay the learning rate by this factor every epoch.Default: 0.995--loader-threads LOADER_THREADSHow many loader threads to use for the batch loaders.Default: 4--preprocess Preprocess the dataset. Needs to be executed onlyonce. Default: 4--resume Resume a model.--use-bias Use a bias in the convolutional layer. Default: True--label-smoothing LABEL_SMOOTHINGLabel smoothing value to use. Default: 0.1--hidden-size HIDDEN_SIZEThe side of the hidden layer. The required sizechanges with the size of the embeddings. Default: 9728(embedding size 200).

注意事項:--preprocess 只執行一次就可以了。例如,第二步的命令執行時,已經帶上了這個參數,以后的訓練就不必再添加這個參數了:

--preprocess Preprocess the dataset. Needs to be executed onlyonce. Default: 4

五. 關于論文復現

執行下列命令,選擇數據集替換 DATASET_NAME,其余使用默認值,可還原論文:

CUDA_VISIBLE_DEVICES=0 python main.py --data DATASET_NAME

六. 論文復現中還可能遇到的問題

🕐 ModuleNotFoundError: No module named ‘sklearn’

原因:sklearn 和 scikit-learn 不一樣,這個報錯的 sklearn 是機器學習庫 scikit-learn 縮寫,安裝 sklearn 沒用:
解決辦法:執行以下命令

?pip install scikit-learn

🕐 ModuleNotFoundError: No module named ‘bashmagic’/‘spodernet’

把 ConvE-master/src/bashmagic 下的 bashmagic 拷貝到 ConvE-master 目錄下

把 ConvE-master/src/spodernet下的 spodernet 拷貝到 ConvE-master 目錄下:

🕐 ModuleNotFoundError: No module named ‘past’

缺失這個包的話,安裝 future,而不是 past

pip install future

其余的缺什么包,pip直接安裝即可


本文展示了 自己在復現 ConvE 模型可能遇到的問題及解決辦法,如有疑問,請參考 ConvE 文件夾下的readme.md文件或訪問文首的 Github 地址,歡迎評論區交流指正


七. 評論區回答更新(2022.4.27)

出現原因:pip install -r requirements.txt 中出現問題

我重新去復現了下模型,也遇到同樣的錯誤:

按以下方法, 問題成功解決:

① 解決 9418 端口上未經身份驗證的 git 協議錯誤,執行如下命令,9418錯誤消失:

git config --global url."https://".insteadOf git://

然后再執行 pip install -r requirements.txt,可能依舊無法訪問:

② 更換 pip 源:
在 pip.conf 中添加:

[global]timeout = 6000index-url = https://pypi.doubanio.com/simpletrusted-host = pypi.doubanio.com

更新:

sudo apt-get update

再去執行命令就好了:

八、2022.5.16 更新

由于工作需要再次用到 convE 模型,中間這段時間沒有改變和配置環境,但今天再次運行時卻報錯:

RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED

解決方案可參考博文:

《玄學錯誤:RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED 解決方案——cuDNN 卸載并重裝》

總結

以上是生活随笔為你收集整理的ConvE,知识图谱嵌入(KGE)论文复现(Ubuntu 20.04)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。