# GPF
## 一、GPF(Graph Processing Flow):利用图神经网络处理问题的一般化流程
1、图节点预表示:利用NE框架,直接获得全图每个节点的Embedding;<br>
2、正负样本采样:(1)单节点样本;(2)节点对样本;<br>
3、抽取封闭子图:可做类化处理,建立一种通用图数据结构;<br>
4、子图特征融合:预表示、节点特征、全局特征、边特征;<br>
5、网络配置:可以是图输入、图输出的网络;也可以是图输入,分类/聚类结果输出的网络;<br>
6、训练和测试;<br>
![https://github.com/xchadesi/GPF/blob/master/gpf.JPG](https://github.com/xchadesi/GPF/blob/master/gpf.JPG)
## 二、主要文件:
1、graph.py:读入图数据;<br>
2、embeddings.py:预表示学习;<br>
3、sample.py:采样;<br>
4、subgraphs.py/s2vGraph.py:抽取子图;<br>
5、batchgraph.py:子图特征融合;<br>
6、classifier.py:网络配置;<br>
7、parameters.py/until.py:参数配置/帮助文件;<br>
## 三、使用
1、在parameters.py中配置相关参数(可默认);<br>
2、在example/文件夹中运行相应的案例文件--包括链接预测、节点状态预测;<br>
以链接预测为例:<br>
### 1、导入配置参数
```from parameters import parser, cmd_embed, cmd_opt```
### 2、参数转换
```
args = parser.parse_args()
args.cuda = not args.noCuda and torch.cuda.is_available()
torch.manual_seed(args.seed)
if args.cuda:
torch.cuda.manual_seed(args.seed)
if args.hop != 'auto':
args.hop = int(args.hop)
if args.maxNodesPerHop is not None:
args.maxNodesPerHop = int(args.maxNodesPerHop)
```
### 3、读取数据
```
g = graph.Graph()
g.read_edgelist(filename=args.dataName, weighted=args.weighted, directed=args.directed)
g.read_node_status(filename=args.labelName)
```
### 4、获取全图节点的Embedding
```
embed_args = cmd_embed.parse_args()
embeddings = embeddings.learn_embeddings(g, embed_args)
node_information = embeddings
#print node_information
```
### 5、正负节点采样
```
train, train_status, test, test_status = sample.sample_single(g, args.testRatio, max_train_num=args.maxTrainNum)
```
### 6、抽取节点对的封闭子图
```
net = until.nxG_to_mat(g)
#print net
train_graphs, test_graphs, max_n_label = subgraphs.singleSubgraphs(net, train, train_status, test, test_status, args.hop, args.maxNodesPerHop, node_information)
print('# train: %d, # test: %d' % (len(train_graphs), len(test_graphs)))
```
### 7、加载网络模型,并在classifier中配置相关参数
```
cmd_args = cmd_opt.parse_args()
cmd_args.feat_dim = max_n_label + 1
cmd_args.attr_dim = node_information.shape[1]
cmd_args.latent_dim = [int(x) for x in cmd_args.latent_dim.split('-')]
if len(cmd_args.latent_dim) == 1:
cmd_args.latent_dim = cmd_args.latent_dim[0]
model = classifier.Classifier(cmd_args)
optimizer = optim.Adam(model.parameters(), lr=args.learningRate)
```
### 8、训练和测试
```
train_idxes = list(range(len(train_graphs)))
best_loss = None
for epoch in range(args.num_epochs):
random.shuffle(train_idxes)
model.train()
avg_loss = loop_dataset(train_graphs, model, train_idxes, cmd_args.batch_size, optimizer=optimizer)
print('\033[92maverage training of epoch %d: loss %.5f acc %.5f auc %.5f\033[0m' % (epoch, avg_loss[0], avg_loss[1], avg_loss[2]))
model.eval()
test_loss = loop_dataset(test_graphs, model, list(range(len(test_graphs))), cmd_args.batch_size)
print('\033[93maverage test of epoch %d: loss %.5f acc %.5f auc %.5f\033[0m' % (epoch, test_loss[0], test_loss[1], test_loss[2]))
```
### 9、运行结果
```
average test of epoch 0: loss 0.62392 acc 0.71462 auc 0.72314
loss: 0.51711 acc: 0.80000: 100%|███████████████████████████████████| 76/76 [00:07<00:00, 10.09batch/s]
average training of epoch 1: loss 0.54414 acc 0.76895 auc 0.77751
loss: 0.37699 acc: 0.79167: 100%|█████████████████████████████████████| 9/9 [00:00<00:00, 34.07batch/s]
average test of epoch 1: loss 0.51981 acc 0.78538 auc 0.79709
loss: 0.43700 acc: 0.84000: 100%|███████████████████████████████████| 76/76 [00:07<00:00, 9.64batch/s]
average training of epoch 2: loss 0.49896 acc 0.79184 auc 0.82246
loss: 0.63594 acc: 0.66667: 100%|█████████████████████████████████████| 9/9 [00:00<00:00, 28.62batch/s]
average test of epoch 2: loss 0.48979 acc 0.79481 auc 0.83416
loss: 0.57502 acc: 0.76000: 100%|███████████████████████████████████| 76/76 [00:07<00:00, 9.70batch/s]
average training of epoch 3: loss 0.50005 acc 0.77447 auc 0.79622
loss: 0.38903 acc: 0.75000: 100%|█████████████████████████████████████| 9/9 [00:00<00:00, 34.03batch/s]
average test of epoch 3: loss 0.41463 acc 0.81132 auc 0.86523
loss: 0.54336 acc: 0.76000: 100%|███████████████████████████████████| 76/76 [00:07<00:00, 9.57batch/s]
average training of epoch 4: loss 0.44815 acc 0.81711 auc 0.84530
loss: 0.44784 acc: 0.70833: 100%|█████████████████████████████████████| 9/9 [00:00<00:00, 28.62batch/s]
average test of epoch 4: loss 0.48319 acc 0.81368 auc 0.84454
loss: 0.36999 acc: 0.88000: 100%|███████████████████████████████████| 76/76 [00:07<00:00, 10.17batch/s]
average training of epoch 5: loss 0.39647 acc 0.84184 auc 0.89236
loss: 0.15548 acc: 0.95833: 100%|█████████████████████████████████████| 9/9 [00:00<00:00, 28.62batch/s]
average test of epoch 5: loss 0.30881 acc 0.89623 auc 0.95132
```
## 四、引用
[图节点表示学习框架: https://github.com/thunlp/OpenNE/](https://github.com/thunlp/OpenNE/)<br>
[节点状态预测-DeepInf: https://github.com/xptree/DeepInf/](https://github.com/xptree/DeepInf/)<br>
[链接预测-SEAL: https://github.com/muhanzhang/SEAL/](https://github.com/muhanzhang/SEAL/)<br>
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
GPF(图处理流):一种使用图神经网络进行问题处理的广义过程.zip (81个子文件)
GPF-master
gpf.JPG 20KB
LICENSE 1KB
.gitignore 1KB
GPF
src
s2vGraph.py 1KB
main_single.py 3KB
main_fixDegree.py 3KB
embeddings.py 4KB
Parameters.py 8KB
sample.py 2KB
batchgraph.py 2KB
graph.py 3KB
until.py 600B
classifier.py 5KB
main_pairs.py 2KB
subgraphs.py 11KB
data
karate.label.txt 159B
USAir.mat 5KB
karate.edgelist.txt 389B
Testdata.ipynb 3KB
USAir.label.txt 2KB
USAir.edgeList.txt 16KB
NE
__init__.py 0B
hope.py 2KB
walker.py 6KB
sdne.py 11KB
tadw.py 4KB
lle.py 2KB
node2vec.py 2KB
graph.py 3KB
__main__.py 8KB
line.py 11KB
lap.py 2KB
gcn
utils.py 5KB
__init__.py 0B
inits.py 810B
metrics.py 691B
gcn.py 7KB
layers.py 6KB
models.py 6KB
gcnAPI.py 7KB
train.py 4KB
gf.py 2KB
grarep.py 2KB
classify.py 3KB
GraphNet
__init__.py 0B
gat.py 2KB
s2v_lib
embedding.py 5KB
include
config.h 657B
graph_struct.h 3KB
msg_pass.h 453B
s2v_lib.h 847B
Makefile 825B
src
lib
msg_pass.cpp 3KB
config.cpp 51B
graph_struct.cpp 2KB
s2v_lib.cpp 4KB
build
lib
graph_struct.o 15KB
msg_pass.o 9KB
graph_struct.d 74B
config.d 56B
msg_pass.d 105B
config.o 2KB
dll
libs2v.d 160B
libs2v.so 32KB
pytorch_util.py 2KB
mlp.py 2KB
s2v_lib.py 6KB
gat_layers.py 4KB
gcn_layers.py 1KB
gcn.py 2KB
mlp_dropout.py 2KB
pscn.py 3KB
pytorch_util.py 2KB
s2v_lib.py 6KB
DGCNN.py 6KB
example
main_single.py 3KB
main_fixDegree.py 3KB
main_pairs.py 2KB
readme.txt 776B
README.md 6KB
GPF(Graph Processing Flow):利用图神经网络处理问题的一般化流程_GPF
项目内附说明
如果解压失败请用ara软件解压.txt 42B
共 81 条
- 1
资源评论
好家伙VCC
- 粉丝: 2161
- 资源: 9145
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功