mindspore_gl.graph.add_self_loop
- mindspore_gl.graph.add_self_loop(edge_index, edge_weight, node, fill_value, mode='dense')[源代码]
从输入COO矩阵中添加自循环。 可以选择对dense矩阵或COO格式的矩阵进行操作。
- 参数:
edge_index (Tensor) - 边索引。shape为 \((2, N\_e)\) 其中 \(N\_e\) 是边的数量。
edge_weight (Tensor) - 边权重。shape为 \((N\_e)\) 其中 \(N\_e\) 是边的数量。
node (int) - 节点数。
fill_value (Tensor) - 自循环值。
mode (str, 可选) - 操作矩阵的类型。支持的类型为
'dense'
和'coo'
。默认值:'dense'
。
- 返回:
如果 mode 等于
'dense'
:new_adj (Tensor) - 添加对角矩阵后的对象。
如果 mode 等于
'coo'
:edge_index (Tensor) - 新的边索引。
edge_weight (Tensor) - 新的边权重。
- 异常:
ValueError - 如果 mode 不是
'coo'
或'dense'
。TypeError - 如果 node 不是正整数。
ValueError - 如果 fill_value 长度不等于 node 。
- 支持平台:
Ascend
GPU
样例:
>>> from mindspore import Tensor >>> from mindspore_gl.graph import add_self_loop >>> edge_index = [[1, 1, 2, 2], [0, 2, 0, 1]] >>> edge_index = ms.Tensor(edge_index, ms.int32) >>> edge_weight = Tensor([1, 1, 1, 1], ms.float32) >>> node = 3 >>> fill_value = Tensor([2, 2, 2], ms.float32) >>> new_adj = add_self_loop(edge_index, edge_weight, node, fill_value, mode='dense') >>> print(new_adj) [[2. 0. 0.] [1. 2. 1.] [1. 1. 2.]] >>> edge_index, edge_weight = add_self_loop(edge_index, edge_weight, node, fill_value, mode='coo') >>> print(edge_index) [[1 1 2 2 0 1 2] [0 2 0 1 0 1 2]] >>> print(edge_weight) [1. 1. 1. 1. 2. 2. 2.]