Demo代码链接
申明
本文不是图卷积和Cora数据集的介绍博文,本文目的是介绍博主最近在github刚开源的一个用图卷积处理Cora数据集的demo。在使用阅读该demo项目代码前,最好先掌握图卷积的知识。该demo的算法构造除了少量变化外(变化下面会说)大体和论文"Semi-supervised Classification with Graph Convolutional Networks"提出的算法相同,因此,建议先看下这篇文章,其内容稍微有点晦涩难懂,一遍不容易读懂,建议可以看看网上关于图卷积的文章,介绍这篇论文的博文不算少,在微积分、线性代数、概率论知识没问题的情况下多看看应该还是能看懂。
本文动机
一方面是基于目前的深度学习发展情况和困境,博主比较看好图卷积在接下来一两年的发展,另一方面是马上要接手的一个项目可能会用到图卷积,所以速成自学了下,顺手用pytorch写了一个处理Cora数据集进行分类的代码放github上开源了,有兴趣可以看看。
demo介绍
其实也没啥可介绍的,照着我在github的Readme里写的运行步骤跑就行了,总共就没几个文件。这里先简单说下Cora数据集是啥。这是个论文数据集,里面包含一千多篇属于七个类别的论文的词向量信息和这些论文之前的相互引用情况,要基于这些信息对论文进行分类。
说一下我的实现和原作"Semi-supervised Classification with Graph Convolutional Networks"里不同的地方。看该论文的公式(9)可以看到做了两次AXW操作(对应两层网络),但在代码实现的时候发现这个设定很迷,因为这意味着得一次输入得是整个数据集而没办法采用batch learning的形式(一次只送入部分数据)。因此博主只在第一层做了AXW运算,外面那层是XW没有A以实现batch learning。