这个项目包含了GGNN(Gated Graph Neural Network1,门控图神经网络)的代码,以及基于GGNN的API代码推荐和token推荐模型的源代码。
本项目有三个模块:
GGNN模型的代码,tf版本和pytorch版本
(1) tf_version
-
代码来源:微软开源的 tensorflow1.0+ 版本的GGNN源代码,项目路径:microsoft/gated-graph-neural-network-samples2。
-
注意:为了方便阅读和调试,我们对
microsoft/gated-graph-neural-network-samples
的代码进行了简单的修改,将原来的DenseGGNNChemModel类和ChemModel类合并为DenseGGNNModel类。
(2) torch_version
-
说明:参考Tensorflow版本复现的PyTorch版本 GGNN 模型。
-
注意:只包含了模型的代码,不包含数据集加载部分。目前 main.py 中所有的数据都是随机生成的。
基于GGNN模型的API推荐,包含一个tf版本和两个pytorch版本。
Step1. 将代码的 API上下文图 输入到 GGNN 中得到此图的向量表示
Step2. 将代码的 token序列 输入到 LSTM 中的到隐藏状态
Step3. 将两个网络输出的向量拼接,在输入到Softmax得到输出
(1) tf_version_1
-
说明:tensorflow 1.0+ 版本的 API推荐模型
-
代码来源:论文 Holistic Combination of Structural and Textual Code Information for Context based API Recommendation3 的源代码。
-
注意:此API推荐模型中的GGNN模型的代码是在
microsoft/gated-graph-neural-network-samples
的基础上改的。
(2) tf_version_2
-
说明:依然是tensorflow 1.0+ 版本的 API推荐模型。这里的代码和
code_rec_api_level/tf_version_1
几乎是一样,只是将 tf_version_1/model_train.py 中的类拆分到了不同文件。 -
代码来源:依然是论文 Holistic Combination of Structural and Textual Code Information for Context based API Recommendation3 的源代码。
(3) torch_version_1
(4) torch_version_2
-
说明:Pytorch版本的 API推荐,和(3)的区别是GGNN模型的代码不同。
-
代码来源:GGNN模型的代码使用的是
basic_ggnn_model/torch_version
中的。
基于GGNN模型的代码token推荐,目前只包含一个tf版本。
(1) tf_version
- 说明:tensorflow版本的 token推荐,参考
code_rec_api_level/tf_version_1
来实现。
[1] Gated Graph Sequence Neural Networks.
[2] GitHub - microsoft/gated-graph-neural-network-samples: Sample Code for Gated Graph Neural Networks