2.4K Star 8.2K Fork 4.4K

GVPMindSpore / mindspore

 / 详情

支持VectorNet图数据处理

TODO
RFC
创建于  
2022-06-22 16:35
name about labels
RFC Graph data load and process kind/feature

1. Backgroud(背景信息)

  • VectorNet网络中使用到了Pytorch Geometric(PYG)中图数据处理的能力,当前MindData与pyg功能还存在差距
  • 主要缺少对标PYG Data 和 InMemoryDataset的能力(包含graph save和load的能力)
  • 此外针对图的batch操作,和常规的batch操作有区别

2. Design(设计方案)

  • 分析业界主流方案(pyg, dgl, pgl)提供支持输入numpy array的Graph接口,进行图构造
  • 提供加载图数据的Dataset接口,兼顾易用性和自定义的诉求,接口中支持图加载和保存(分析后图加载保存,先基于numpy.npz格式进行存储)
  • 针对新增的Graph类,基本重写了对应的方法,将node_type/edge_type/feature_type等从原来的int改为string,使得含义更明确及方便使用。
  • 新增get_graph_feature接口,用于存储和节点和边无直接关联的特征(shape的1维不等于节点或边的数量);graph_feature在c层存储和node_feature等存储方式不一致,node_feature等沿用之前的方案会将传入的node_feature划分到每个node中进行存储;graph_feature这直接在graph级别进行存储,不需要进一步划分。
  • 图的batch操作,主要拓展batch算子的能力

3. 使用样例

# 样例1:
# 加载numpy array数据来构造Graph, 不需要提前先转换为mindrecord;
# Graph接口必要的入参为`edges`

edges = np.array([[1, 2], [0, 1]], dtype=np.int32)
g = Graph(edges)
graph_info = g.graph_info()
# 样例2:
# 给节点和边设置对应的特征,特征第一维的shape需要和节点或边的数量一致
# 特征通过字典传递进去,key为对应的特征名字

edges = np.array([[1, 2], [0, 1]], dtype=np.int32)
node_feat = {"node_feature_1": np.array([[0], [1], [2]], dtype=np.int32)}
edge_feat = {"edge_feature_1": np.array([[1, 2], [3, 4]], dtype=np.int32)}
g = Graph(edges, node_feat, edge_feat)

评论 (2)

ms_yan 创建了RFC

Please assign maintainer to check this issue.
请为此issue分配处理人。
@ms_yan

Please add labels (comp or sig), also you can visit https://gitee.com/mindspore/community/blob/master/sigs/dx/docs/labels.md to find more.
为了让代码尽快被审核,请您为Pull Request打上 组件(comp)或兴趣组(sig) 标签,打上标签的PR可直接推送给责任人进行审核。
更多的标签可以查看https://gitee.com/mindspore/community/blob/master/sigs/dx/docs/labels.md
以组件相关代码提交为例,如果你提交的是data组件代码,你可以这样评论:
//comp/data
当然你也可以邀请data SIG组来审核代码,可以这样写:
//sig/data
另外你还可以给这个PR标记类型,例如是bugfix或者是特性需求:
//kind/bug or //kind/feature
恭喜你,你已经学会了使用命令来打标签,接下来就在下面的评论里打上标签吧!

ms_yan 修改了描述
ms_yan 负责人设置为ms_yan
ms_yan 里程碑设置为IT-2022Q2-数据框架
ms_yan 添加了
 
sig/minddata
标签
ms_yan 修改了标题
ms_yan 修改了描述

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(2)
Python
1
https://gitee.com/mindspore/mindspore.git
git@gitee.com:mindspore/mindspore.git
mindspore
mindspore
mindspore

搜索帮助