关于CrossMNA的代码解读

论文来源:

This repo contains the source code and datasets of WWW' 19 paper: Cross-Network Embedding for Multi-Network Alignment.

代码结构不难,整个算法流程没有什么特殊的trick。简单的介绍一下CrossMNA的代码;

首先是数据处理的split.py

这个文件还是用了一些小trick的,这个代码分为两个板块,但是读了才知道,其实transfer并没有作用....只是给读者做一个观看而已


重点介绍一下他的分割split.py  这里有一些坑,这里最主要是生成了两个文件,network.pk,和new_network.txt, 但是i两个存储的内容是不同的,我们可以看到他的注释,他在pk文件中是删除了train 节点的,network.txt中没有删除  包含所有的边,生成新network的方式,主要是为了保持节点的唯一性,首先获取最大节点的数量,然后 新网络的最小id=之前最大节点id+1。

然后利用set的加减异或操作,很快得到了test和ground文件,所以其实根本不需要transfer文件代码(不信你可以删除试试,无影响)

然后是400个epoch的操作,比较简单

model可以看一下:model里面的公式和论文中的一样,通过生成不同网络层的一个网络embedding 计算 r=uw+l,loss用负对数


eval_emb:



但是整个代码跑完并没有达到论文中的准确率,跑了几次 差不多相差1.5%-2%,如果只是为了得到最后的结果  建议将if epoch==50改为200  那个处理实在是太慢了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容