资源简介
# GPF
## 一、GPF(Graph Processing Flow):利用图神经网络处理问题的一般化流程
1、图节点预表示:利用NE框架,直接获得全图每个节点的Embedding;
2、正负样本采样:(1)单节点样本;(2)节点对样本;
3、抽取封闭子图:可做类化处理,建立一种通用图数据结构;
4、子图特征融合:预表示、节点特征、全局特征、边特征;
5、网络配置:可以是图输入、图输出的网络;也可以是图输入,分类/聚类结果输出的网络;
6、训练和测试;
## 二、主要文件:
1、graph.py:读入图数据;
2、embeddings.py:预表示学习;
3、sample.py:采样;
4、subgraphs.py/s2vGraph.py:抽取子图;
5、batchgraph.py:子图特征融合;
6、classifier.py:网络配置;
7、parameters.py/until.py:参数配置/帮助文件;
## 三、使用
1、在parameters.py中配置相关参数(可默认);
2、在example/文件夹中运行相应的案例文件--包括链接预测、节点状态预测;
以链接预测为例:
### 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)
代码片段和文件信息
#!/usr/bin/env python
# encoding: utf-8
import sys
#指定路径
sys.path.append(“../src/“)
import graph
import embeddings
import sample
import classifier
from classifier import loop_dataset
import subgraphs
import argparse
import torch
import torch.optim as optim
import networkx as nx
import until
import random
from tqdm import tqdm
#导入配置参数
from parameters import parser cmd_embed cmd_opt
#参数转换
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)
#读取数据
g = graph.Graph()
g.read_edgelist(filename=args.dataName weighted=args.weighted directed=args.directed)
g.read_node_status(filename=args.labelName)
#获取全图节点的embedding
embed_args = cmd_embed.parse_args()
embeddings = embeddings.learn_embeddings(g embed_args)
node_information = embeddings
#print node_information
#正负节点对采样
train train_status test test_status = sample.sample_single(g args.testRatio max_train_num=args.maxTrainNum)
#抽取节点对的封闭子图
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)))
#加载网络模型,并在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)
#训练和测试
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]))
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-11-04 04:46 GPF-master\
文件 1203 2018-11-04 04:46 GPF-master\.gitignore
目录 0 2018-11-04 04:46 GPF-master\GPF\
目录 0 2018-11-04 04:46 GPF-master\GPF\GraphNet\
文件 5812 2018-11-04 04:46 GPF-master\GPF\GraphNet\DGCNN.py
文件 0 2018-11-04 04:46 GPF-master\GPF\GraphNet\__init__.py
文件 2217 2018-11-04 04:46 GPF-master\GPF\GraphNet\gat.py
文件 3700 2018-11-04 04:46 GPF-master\GPF\GraphNet\gat_la
文件 1879 2018-11-04 04:46 GPF-master\GPF\GraphNet\gcn.py
文件 1249 2018-11-04 04:46 GPF-master\GPF\GraphNet\gcn_la
文件 1985 2018-11-04 04:46 GPF-master\GPF\GraphNet\mlp_dropout.py
文件 2701 2018-11-04 04:46 GPF-master\GPF\GraphNet\pscn.py
文件 1850 2018-11-04 04:46 GPF-master\GPF\GraphNet\pytorch_util.py
文件 6324 2018-11-04 04:46 GPF-master\GPF\GraphNet\s2v_lib.py
目录 0 2018-11-04 04:46 GPF-master\GPF\GraphNet\s2v_lib\
文件 825 2018-11-04 04:46 GPF-master\GPF\GraphNet\s2v_lib\Makefile
目录 0 2018-11-04 04:46 GPF-master\GPF\GraphNet\s2v_lib\build\
目录 0 2018-11-04 04:46 GPF-master\GPF\GraphNet\s2v_lib\build\dll\
文件 160 2018-11-04 04:46 GPF-master\GPF\GraphNet\s2v_lib\build\dll\libs2v.d
文件 33238 2018-11-04 04:46 GPF-master\GPF\GraphNet\s2v_lib\build\dll\libs2v.so
目录 0 2018-11-04 04:46 GPF-master\GPF\GraphNet\s2v_lib\build\lib\
文件 56 2018-11-04 04:46 GPF-master\GPF\GraphNet\s2v_lib\build\lib\config.d
文件 2096 2018-11-04 04:46 GPF-master\GPF\GraphNet\s2v_lib\build\lib\config.o
文件 74 2018-11-04 04:46 GPF-master\GPF\GraphNet\s2v_lib\build\lib\graph_struct.d
文件 15416 2018-11-04 04:46 GPF-master\GPF\GraphNet\s2v_lib\build\lib\graph_struct.o
文件 105 2018-11-04 04:46 GPF-master\GPF\GraphNet\s2v_lib\build\lib\msg_pass.d
文件 9088 2018-11-04 04:46 GPF-master\GPF\GraphNet\s2v_lib\build\lib\msg_pass.o
文件 4855 2018-11-04 04:46 GPF-master\GPF\GraphNet\s2v_lib\em
目录 0 2018-11-04 04:46 GPF-master\GPF\GraphNet\s2v_lib\include\
文件 657 2018-11-04 04:46 GPF-master\GPF\GraphNet\s2v_lib\include\config.h
文件 2666 2018-11-04 04:46 GPF-master\GPF\GraphNet\s2v_lib\include\graph_struct.h
............此处省略64个文件信息
- 上一篇:lua脚本加密工具:简单异或加密
- 下一篇:四通道LVDS转RGB芯片
相关资源
- Processing写的简单AR代码
- 添加运动(motion blur)与去运动模糊(
- Fix Yosemite VM Graphic Performance
- process monitor.vi 进程监视器
- HOOK API源码 (OPENPROCESS)
- ImageProcessor
- graph and chart 手册
- processing画五角星点击画五角星
- GraphTraversal.zip
- processing二维温度场
- 进程cpu占用率和内存使用大小获取
- Visual.Micro.Processing.Sketch
- PRTG Traffic Grapher 6 版本注册码
- 最新版本ZedGraph控件
- Introduction to Stochastic Processes 随机过程
- VC 绘图库VCGraph-V20091123
- qt 绘制流程图程序——Diagram
- Graphics.h教程
- Boykov的GraphCut算法
- QGraphicsView Draw
- 在QGraphicsScene上画矩形
-
Efficient Graph-ba
sed Image Segmentation & - QmlBarGraphShow.zip
- graph.h
- 英特尔集成显卡及核心显卡Intel(R)
- Qt使用QGraphicsView实现滑动窗体效果
- WidgetTimeline.zip
- 画图程序Graphic
- 使用Processing+Arduino写的类似雷达扫描
- X64 inline hook CreateProcessInternalW
评论
共有 条评论