xiangwang1223 / knowledge_graph_attention_network

KGAT: Knowledge Graph Attention Network for Recommendation, KDD2019
MIT License
1.08k stars 316 forks source link

Running KGAT on Customized Dataset #42

Open liyy2 opened 3 years ago

liyy2 commented 3 years ago

When I trying to run KGAT on a customized dataset, I get this error `GAT-lyy) yunyangli@UBUNTU1604-R940xa:~/knowledge_graph_attention_network/Model$ python Main.py --model_type kgat --alg_type bi --dataset sl --regs [1e-5,1e-5] --layer_size [64,32,16] --embed_size 64 --lr 0.0001 --epoch 1000 --verbose 50 --save_flag 1 --pretrain -1 --batch_size 1024 --node_dropout [0.1] --mess_dropout [0.1,0.1,0.1] --use_att True --use_kge True [n_users, n_items]=[3234, 96393] [n_train, n_test]=[26379, 26187] [n_entities, n_relations, n_triples]=[96397, 27, 4462966] [batch_size, batch_size_kg]=[1024, 178518] convert ratings into adj mat done. convert 50 relational triples into adj mat done. @1.6183s /home/yunyangli/knowledge_graph_attention_network/Model/utility/loader_kgat.py:87: RuntimeWarning: divide by zero encountered in power d_inv = np.power(rowsum, -1).flatten() generate si-normalized adjacency matrix. reordering indices... reorganize all kg data done. sort meta-data done. sort all data done. using xavier initialization

params: 6611344

without pretraining. Traceback (most recent call last): File "Main.py", line 269, in A_batch_data = data_generator.generate_train_A_batch() File "/home/yunyangli/knowledge_graph_attention_network/Model/utility/loader_kgat.py", line 254, in generate_train_A_batch heads, relations, pos_tails, neg_tails = self._generate_train_A_batch() File "/home/yunyangli/knowledge_graph_attention_network/Model/utility/loader_kgat.py", line 190, in _generate_train_A_batch heads = [rd.choice(existheads) for in range(self.batch_size_kg)] File "/home/yunyangli/knowledge_graph_attention_network/Model/utility/loader_kgat.py", line 190, in heads = [rd.choice(existheads) for in range(self.batch_size_kg)] File "/home/yunyangli/.conda/envs/KGAT-lyy/lib/python3.6/random.py", line 261, in choice return seq[i] TypeError: 'dict_keys' object does not support indexing`

When running the provided dataset, it's fine. However, when turning into my dataset, I get this weird error. I am running this on python 3.6.3, and everything else is the same as the specified environment.

haotiandouluo commented 1 year ago

您好,自己的数据集怎么生成train.txt和test.txt还有kg_final.txt?

yinwang11 commented 6 months ago

您好,自己的数据集怎么生成train.txt和test.txt还有kg_final.txt?

您好,您的问题解决了吗?我也想了解这个问题

haotiandouluo commented 6 months ago

大哥,这是我去年11月12月份问的吧,我这个毕设都做完答辩完过了快半年了呀,现在问,是不是有点晚了呀?这个我就是自己写代码就自己匹配,我相信你应该看的懂原始数据集的那些编号是什么意思,当时也是自己写代码,用自己的数据集一个一个匹配。

---Original--- From: @.> Date: Tue, May 21, 2024 19:27 PM To: @.>; Cc: @.**@.>; Subject: Re: [xiangwang1223/knowledge_graph_attention_network] Running KGAT onCustomized Dataset (#42)

您好,自己的数据集怎么生成train.txt和test.txt还有kg_final.txt?

您好,您的问题解决了吗?我也想了解这个问题

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

Geeker-LStar commented 4 months ago

大哥,这是我去年11月12月份问的吧,我这个毕设都做完答辩完过了快半年了呀,现在问,是不是有点晚了呀?这个我就是自己写代码就自己匹配,我相信你应该看的懂原始数据集的那些编号是什么意思,当时也是自己写代码,用自己的数据集一个一个匹配。 ---Original--- From: @.> Date: Tue, May 21, 2024 19:27 PM To: @.>; Cc: @.**@.>; Subject: Re: [xiangwang1223/knowledge_graph_attention_network] Running KGAT onCustomized Dataset (#42) 您好,自己的数据集怎么生成train.txt和test.txt还有kg_final.txt? 您好,您的问题解决了吗?我也想了解这个问题 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

大佬您还有数据预处理的代码嘛...就是怎么把原始数据集变成符合模型要求的数据集....谢谢大佬! @haotiandouluo

haotiandouluo commented 4 months ago

因为我毕业之后不干计算机这一行了,我电脑重装系统,那些代码也就没了,我只能跟你这样说,当时我也是自己一个一个代码敲出来的,而且没有人回复我之类的,我也是根据自己的想法一步一步来的,差不多写这些匹配数据集的代码。我写了半个月,而且我到最后我写的这个匹配代码,有时候我自己都看不懂,太多细节逻辑之类的,而且就算,我代码还在,我不可能把整个源代码打包发给你啊,只可能给你发那一段匹配数据集的代码,而且这些匹配数据的代码里面涉及到很多个数据库,有mysql和mongo的,就算说这个代码给你了,你可能大概率也看不懂,因为我本人有时候都看不懂,你应该是本科的毕设吧,只能说你现在做的话完全来得及,我当时是11月份才开始敲代码的,然后1月初左右答辩,包括全部的源代码敲完什么模型弄完了前端页面弄完论文写完,然后再给老师改一遍。当然那段时间我是死赶,你说你现在这个时间应该来得及。

明良优 @.***

---Original--- From: "李天星 @.> Date: Thu, Jul 25, 2024 09:34 AM To: @.>; Cc: @.**@.>; Subject: Re: [xiangwang1223/knowledge_graph_attention_network] Running KGAT onCustomized Dataset (#42)

大哥,这是我去年11月12月份问的吧,我这个毕设都做完答辩完过了快半年了呀,现在问,是不是有点晚了呀?这个我就是自己写代码就自己匹配,我相信你应该看的懂原始数据集的那些编号是什么意思,当时也是自己写代码,用自己的数据集一个一个匹配。 … ---Original--- From: @.> Date: Tue, May 21, 2024 19:27 PM To: @.>; Cc: @.@.>; Subject: Re: [xiangwang1223/knowledge_graph_attention_network] Running KGAT onCustomized Dataset (#42) 您好,自己的数据集怎么生成train.txt和test.txt还有kg_final.txt? 您好,您的问题解决了吗?我也想了解这个问题 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

大佬您还有数据预处理的代码嘛...就是怎么把原始数据集变成符合模型要求的数据集....谢谢大佬! @haotiandouluo

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

Geeker-LStar commented 4 months ago

aaaa 好的!!!!(你敲那些代码大概用了多久..?跑完所有实验又用了多久呀? 我不是毕设,我在做论文的对比试验,快截稿了..(捂脸

Geeker-LStar commented 4 months ago

@haotiandouluo

haotiandouluo commented 4 months ago

有数据预处理的话,我用了半个月15天左右 , 他就是每个用户要一个ID,商品有一个ID,然后用户与商品之间的关系要有一个ID,自己写的嘛,让他们一个一个匹配嘛,ID从0或者1开始设起,然后自己写代码去匹配,训练的话,我看你这个留言好像这个github他的文章应该用的是tensorflow吧?没记错的话应该是,但是我用的这个模型代码不是tensoflow的,我用的是pytorch版本, tensoflow版本的模型训练我用不来,所以我用的是pytorch的,训练大概训练了半个月左右。

明良优 @.***

---Original--- From: "李天星 @.> Date: Thu, Jul 25, 2024 09:51 AM To: @.>; Cc: @.**@.>; Subject: Re: [xiangwang1223/knowledge_graph_attention_network] Running KGAT onCustomized Dataset (#42)

aaaa 好的!!!!(你敲那些代码大概用了多久..?跑完所有实验又用了多久呀? 我不是毕设,我在做论文的对比试验,快截稿了..(捂脸

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

Geeker-LStar commented 4 months ago

!!!能问一下您用的 GPU 配置是什么嘛..因为我可能从写代码到处理完数据到跑完只有三天时间........

haotiandouluo commented 4 months ago

我电脑是轻薄本没有是集成显卡,没资源来训练。我用的是谷歌的那个平台colab,那上面每天会给你5个小时还是几个小时的免费GPU资源,我就是每天用它来训练的

明良优 @.***

---Original--- From: "李天星 @.> Date: Thu, Jul 25, 2024 09:58 AM To: @.>; Cc: @.**@.>; Subject: Re: [xiangwang1223/knowledge_graph_attention_network] Running KGAT onCustomized Dataset (#42)

!!!能问一下您用的 GPU 配置是什么嘛..因为我可能从写代码到处理完数据到跑完只有三天时间........

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

Geeker-LStar commented 4 months ago

好的!谢谢大佬~!

Geeker-LStar commented 4 months ago

大佬,问一个比较细节的问题。自己写代码的话会涉及到数据集和 freebase 的映射,对吗?这个映射需要自己去获得~? 感谢!!! @haotiandouluo

haotiandouluo commented 4 months ago

那个freebase不重要啊,就给你这样例子例子嘛。 第一个用户的ID是1,然后他购买了3套房子,而这三套房子的ID序列号分别是35 46 59。 那他就可以这样写成:1 35 46 59 他不是有一个什么final.txt吗?这个就是知识图谱的形式,有房屋的结构信息 然后他的字段就是他的关系 ,像租金的ID,随便弄一个就是0,然后他具体的数据要给他弄个编号  ,如果他租金是3000块钱,那3000就用一个编号给他代替,你就用个10吧 35这个编号的房子,他的租金是3000块钱。 那就可以写成这样子:35 0 10 35代表房屋,0代表租金,10代表3000块钱

明良优 @.***

---Original--- From: "李天星 @.> Date: Thu, Jul 25, 2024 11:50 AM To: @.>; Cc: @.**@.>; Subject: Re: [xiangwang1223/knowledge_graph_attention_network] Running KGAT onCustomized Dataset (#42)

大佬,问一个比较细节的问题。自己写代码的话会涉及到数据集和 freebase 的映射,对吗?这个映射需要自己去获得~? 感谢!!! @haotiandouluo

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

Geeker-LStar commented 4 months ago

a...我好像没有太理解诶.....(可能我比较笨呜呜呜。。。 就是就是,它不是需要在 freebase 做映射吗,为什么说不用管 freebase 呀? 我比较好奇,它的关系(relation)和实体(entity)是怎么从 freebase 得到映射的?如果不用 freebase,那怎么得到 relation 和 entity 和最终的三元组?

谢谢大佬!!!!

Geeker-LStar commented 4 months ago

@haotiandouluo

haotiandouluo commented 4 months ago

freebase我之前搜CSDN他们说是不用管,我说你要弄这个,你也不知道怎么弄啊,我都没弄过这个,得到那个最终的三元组就是你要通过自己写代码来实现的呀,我就是在这个过程中随便弄了一个Freebase,有类似一个参考,就你这个文件的数据内容要映射到下一个文件就通过这个freebase来定位。我找的这篇原代码它里面的Freebase应该是一大堆你看不懂的东西是吧?我的理解是那个就是用来映射的时候看有没有映射清楚,这是一个中间变量,只要保证你数据映射正确的话,你Freebase随便弄都可以。

明良优 @.***

---Original--- From: "李天星 @.> Date: Thu, Jul 25, 2024 13:45 PM To: @.>; Cc: @.**@.>; Subject: Re: [xiangwang1223/knowledge_graph_attention_network] Running KGAT onCustomized Dataset (#42)

a...我好像没有太理解诶.....(可能我比较笨呜呜呜。。。 就是就是,它不是需要在 freebase 做映射吗,为什么说不用管 freebase 呀? 我比较好奇,它的关系(relation)和实体(entity)是怎么从 freebase 得到映射的?如果不用 freebase,那怎么得到 relation 和 entity 和最终的三元组?

谢谢大佬!!!!

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

Geeker-LStar commented 4 months ago

emmmm 我想我理解了一点...所以您用的什么数据集+什么freebase?~ 谢谢啦!❤

haotiandouluo commented 4 months ago

数据就要自己造呀然后那个freebase就用数字0123456这样子。

明良优 @.***

---Original--- From: "Geeker @.> Date: Thu, Jul 25, 2024 14:10 PM To: @.>; Cc: @.**@.>; Subject: Re: [xiangwang1223/knowledge_graph_attention_network] Running KGAT onCustomized Dataset (#42)

emmmm 我想我理解了一点...所以您用的什么数据集+什么freebase?~ 谢谢啦!❤

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>