pytorch环境已经创建好了
https://github.com/yueyu1030/SumGNN
下载下来
python train.py -d drugbank -e ddi_hop3 --gpu=0 --hop=3 --batch=128 --emb_dim=32 -b=10
根据自己需要调整参数。
我报错:
Traceback (most recent call last):
File "train.py", line 222, in <module>
main(params)
File "train.py", line 32, in main
kge_model=params.kge_model, file_name=params.train_file)
File "/home/chengbt/SumGNN-master/subgraph_extraction/datasets.py", line 71, in __init__
self.db_neg = self.main_env.open_db(db_name_neg.encode())
lmdb.ReadonlyError: mdb_dbi_open: Permission denied
没查到和我一样的错误,定位到源码,命令行执行不方便调试,打印信息如下
报错是在71行,也就是db_name_neg(train_neg)出现问题,70行是成功的,说明大概率不是语法的问题
lmdb不会用。。。。
python(八):python使用lmdb数据库 - jasonzhangxianrong - 博客园
也就是说文件夹下不一定有,只要是一个文件夹就行,然后data.mdb和lock.mdb是配套的,可能train是一个表?
按照上面发的链接教程看下data里是什么东西,可以看到弹出来是一个train_pos,那么71行那个train_neg可能就是没有的。。。
找到问题了,还没解决,我打开https://github.com/yueyu1030/SumGNN/tree/master/data/drugbank
看一看,发现这个里面是没有subgraphs_en_True_neg_0_hop_3的,可能这个是程序自己生成的。
定位到这里,生成的这个文件夹。
我先删了试试,看不懂跑通再说,好了跑通了,不知道后面会不会出问题,先存着
接上:跑了几个小时了,代码我看不懂,然后报了个dgl的错误,这代码看不懂改了这个我想还会有其他的问题,所以我决定先学一下dgl
number of relations:86
Traceback (most recent call last):
File "train.py", line 222, in <module>
main(params)
File "train.py", line 32, in main
kge_model=params.kge_model, file_name=params.train_file)
File "/home/chengbt/SumGNN-master/subgraph_extraction/datasets.py", line 100, in __init__
self.graph = ssp_multigraph_to_dgl(ssp_graph)
File "/home/chengbt/SumGNN-master/utils/graph_utils.py", line 78, in ssp_multigraph_to_dgl
g_dgl.from_networkx(g_nx, edge_attrs=['type'])
File "/home/chengbt/anaconda3/envs/pytorch/lib/python3.6/site-packages/dgl/heterograph.py", line 6027, in from_networkx
raise DGLError('DGLGraph.from_networkx is deprecated. Please call the following\n\n'
dgl._ffi.base.DGLError: DGLGraph.from_networkx is deprecated. Please call the following
dgl.from_networkx(nx_graph, node_attrs, edge_attrs)
跑一下几个小时再报错真的很头痛。。。