建立边,节点,特征
import dgl
import torch as th
(一)清除图
g.clear()
(二)节点和边得数量
print("nodes",g.number_of_nodes())
print("edges",g.number_of_edges())
(二)类型和维度
print(g.node_attr_schemes())
print(g.edge_attr_schemes())
# {'x': Scheme(shape=(3,), dtype=torch.float32)}
# {'x': Scheme(shape=(4,), dtype=torch.float32)}
(三)删除节点和边特征
g.ndata.pop("x")
g.edata.pop("w")
(四)增加节点
g=dgl.DGLGraph()
g.add_nodes(10)
print("nodes",g.nodes())
(五)增加边
1.g.add_edge(i,j)
for i in range(1,4):
g.add_edge(i,0)
print("edges",g.edges())
2.g.add_edges(src_list,dst_list)
src=list(range(5,8))
dst=[0]*3
g.add_edges(src,dst)
3.g.add_edges(src_tensors,dst_tensors)
src=th.tensor([8,9])
dst=th.tensor([0,0])
g.add_edges(src,dst)
4.g.add_edges(src_tensors,int)
src=th.tensor(list(range(1,10)))
g.add_edges(src,0)
(六)节点特征 g.ndata["x"] /g.nodes[:].data['x']
x=th.randn(10,3)
g.ndata["x"]=x
g.nodes[0].data["x"]=th.zeros(1,3)
g.nodes[[0,1,2]].data["x"]=th.zeros(3,3)
g.nodes[th.tensor([0,1,2])].data["x"]=th.zeros(3,3)
node.data["x"]
(七)边特征 g.edata["w"]/g.edges[:].data["w"]
w=th.randn(9,2)
g.edata["w"]=w
1.access edge set with IDs in integer, list, or integer tensor
g.edges[1].data["w"]=th.randn(1,2)--------------------int
g.edges[[0,1,2]].data["w"]=th.zeros(3,2)-------------list
g.edges[th.tensor([0,1,2])].data["w"]=th.zeros(3,2)---tensor
2.one can also access the edges by giving endpoints
g.edges[1,0].data["w"]=th.ones(1,2)----endpoints
g.edges[[1,2,3],[0,0,0]].data["w"]=th.ones(3,2)
(八)多变图 Multigraphs
g_multi=dgl.DGLGraph(multigraph=True)
g_multi.add_nodes(10)
g_multi.ndata["x"]=th.randn(10,2)
g_multi.add_edges(list(range(1,10)),0)
g_multi.add_edge(1,0)--1和0之间再加一条边
g_multi.edata["w"]=th.randn(10,2)
g_multi.edges[1].data["w"]=th.zeros(1,2)
posted on 2019-09-24 17:40 happygril3 阅读(978) 评论(0) 收藏 举报
浙公网安备 33010602011771号