建立边,节点,特征

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)    收藏  举报

导航