啊代码,是代码,我要写KGAT的代码了。
今天听了我们专业大佬讲竞赛的事,大佬真的是太牛了。吓得我赶紧把晚上学英语的时间拿出来写程序。我还挺爱学这个推荐系统的,无奈其他不得不做的事情太多了。
还是老想法,先跑一下看看效果,再自己写。听说云服务器在我睡觉断网的情况下还可以跑模型?是真的嘛?什么都不懂的我打算试试,maybe。
论文在github上的源码地址为https://github.com/xiangwang1223/knowledge_graph_attention_network
conda create -n KGAT
在KGAT中按照说明文档安装以下库:
conda install tensorflow==1.12.0
conda install numpy==1.15.4
conda install scipy==1.1.0
conda install sklearn==0.20.0
还有,下载tensorflow的时候numpy、scipy会跟着一起下,为了不给自己找麻烦,我把这些一起下载的版本高的库都卸掉,下载说明文件里面的指定版本。
conda使用如下命令卸载库:
conda remove <package>
非常好,就是会出现问题,问题如下:
To search for alternate channels that may provide the conda package you’re
looking for, navigate to https://anaconda.org
and use the search bar at the top of the page.
也不是什么大问题,提示要到给定的channel里面下载这个包。
很好,指定的channel也不行,一顿乱试
oh mygod,我还没有设置解释器版本。。。
好吧,下载python=3.6.5
conda install python=3.6.5
再看一下自己有啥库
conda list
非常好,之前下的都没了,惊喜的是有scipy!而且版本就是1.1.0!还有numpy!版本正正好好!
下tensorflow
下sklearn,还是之前的问题。。。
改用pip
整事?又出问题
就是网不好,换个源
pip install sklearn -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
上面的KGAT虚拟环境搭好了,用pycharm打开项目跑一跑试一下吧。手动笑脸。
在pycharm中使用指定的环境,参考我NCF的第一篇文章,
https://blog.csdn.net/weixin_45665465/article/details/115309197
万事俱备,跑代码喽。。。
问题1
又忘截图了。就是一堆错,有一个是提醒我kg_final.txt这个文件找不到的。我去找了一下,他在压缩文件夹里,解压缩拿出来就好了。
问题2
E:\推荐\KGAT复现\knowledge_graph_attention_network-master\knowledge_graph_attention_network-master\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.
E:\推荐\KGAT复现\knowledge_graph_attention_network-master\knowledge_graph_attention_network-master\Model\utility\loader_kgat.py:171: RuntimeWarning: overflow encountered in int_scalars
assert sum(new_h_list) == sum(all_h_list)
E:\推荐\KGAT复现\knowledge_graph_attention_network-master\knowledge_graph_attention_network-master\Model\utility\loader_kgat.py:172: RuntimeWarning: overflow encountered in int_scalars
assert sum(new_t_list) == sum(all_t_list)
sort all data done.
总说除了0除了0。。。去看看到底哪错了吧,好家伙,去看代码,看不懂。。。
知道接下来该做什么了,看代码!是的,看代码!
哈哈哈哈哈哈吼吼吼吼吼。。。。
4.20
我服了,我一直在纠结除以0的那个错误,结果,好家伙,那根本就不是个错误,只是个warning!warning!!!而且明明程序还能继续往下运行啊,我是瞎了吗???
解释一下为什么会有这个warning:
主要是在loader_kgat.py对adj这个稀疏矩阵进行处理的时候报的warning,是因为这个稀疏矩阵只有一部分有数据(有数据的行为n_users,列为n_items,但是矩阵的大小是(n_all,n_all),n_all=n_users+n_entities)。出现问题的代码是这句:
是这个第一行的代码,因为有的行压根没有数据所以会有除以0的问题存在。但是!关键是!人家考虑到这种情况了啊,所以第二句话不就对这句话做出处理了吗,把溢出的数据都变为0了啊!手动微笑。。。
现在的问题是,程序卡着不动了,我也不知道是还在没在运行。。。尴尬
就这without pretraining每次都卡在这。。。所以我要等等看吗?
4.15就写完了,不知道为什么存在草稿箱里一直没发。4.15是周四,也就是说我周五周六周日都没有看代码。嗯,正常,毕竟我也没有把时间花在睡大觉打游戏上。就是事情太多了。