diff --git a/python/paddle/geometric/math.py b/python/paddle/geometric/math.py index a4a27093484e15646fa28febb664bd304d7cc80d..03bb398c0e022f07661ec05ac37e5b390eebb189 100644 --- a/python/paddle/geometric/math.py +++ b/python/paddle/geometric/math.py @@ -38,10 +38,9 @@ def segment_sum(data, segment_ids, name=None): For more information, please refer to :ref:`api_guide_Name`. Returns: - output (Tensor): the reduced result. + - output (Tensor), the reduced result. Examples: - .. code-block:: python import paddle @@ -85,7 +84,7 @@ def segment_mean(data, segment_ids, name=None): r""" Segment mean Operator. - Ihis operator calculate the mean value of input `data` which + This operator calculate the mean value of input `data` which with the same index in `segment_ids`. It computes a tensor such that $out_i = \\frac{1}{n_i} \\sum_{j} data[j]$ where sum is over j such that 'segment_ids[j] == i' and $n_i$ is the number @@ -100,10 +99,9 @@ def segment_mean(data, segment_ids, name=None): For more information, please refer to :ref:`api_guide_Name`. Returns: - output (Tensor): the reduced result. + - output (Tensor), the reduced result. Examples: - .. code-block:: python import paddle @@ -162,10 +160,9 @@ def segment_min(data, segment_ids, name=None): For more information, please refer to :ref:`api_guide_Name`. Returns: - output (Tensor): the reduced result. + - output (Tensor), the reduced result. Examples: - .. code-block:: python import paddle @@ -224,10 +221,9 @@ def segment_max(data, segment_ids, name=None): For more information, please refer to :ref:`api_guide_Name`. Returns: - output (Tensor): the reduced result. + - output (Tensor), the reduced result. Examples: - .. code-block:: python import paddle diff --git a/python/paddle/geometric/message_passing/send_recv.py b/python/paddle/geometric/message_passing/send_recv.py index 8a05ef1051626e120b18b79917149ece43e9a866..b6131d86edd520cf2ae8062a10adbcf9273c69ad 100644 --- a/python/paddle/geometric/message_passing/send_recv.py +++ b/python/paddle/geometric/message_passing/send_recv.py @@ -36,7 +36,6 @@ def send_u_recv( x, src_index, dst_index, reduce_op="sum", out_size=None, name=None ): """ - Graph Learning message passing api. This api is mainly used in Graph Learning domain, and the main purpose is to reduce intermediate memory @@ -82,9 +81,8 @@ def send_u_recv( For more information, please refer to :ref:`api_guide_Name`. Returns: - out (Tensor): The output tensor, should have the same shape and same dtype as input tensor `x`. - If `out_size` is set correctly, then it should have the same shape as `x` except - the 0th dimension. + - out (Tensor), the output tensor, should have the same shape and same dtype as input tensor `x`. + If `out_size` is set correctly, then it should have the same shape as `x` except the 0th dimension. Examples: .. code-block:: python @@ -229,6 +227,7 @@ def send_ue_recv( out = [[1, 3, 4], [4, 10, 12], [2, 5, 6]] + Args: x (Tensor): The input node feature tensor, and the available data type is float32, float64, int32, int64. And we support float16 in gpu version. @@ -248,9 +247,8 @@ def send_ue_recv( For more information, please refer to :ref:`api_guide_Name`. Returns: - out (Tensor): The output tensor, should have the same shape and same dtype as input tensor `x`. - If `out_size` is set correctly, then it should have the same shape as `x` except - the 0th dimension. + - out (Tensor), the output tensor, should have the same shape and same dtype as input tensor `x`. + If `out_size` is set correctly, then it should have the same shape as `x` except the 0th dimension. Examples: .. code-block:: python @@ -432,9 +430,10 @@ def send_uv(x, y, src_index, dst_index, message_op="add", name=None): For more information, please refer to :ref:`api_guide_Name`. Returns: - out (Tensor): The output tensor. + - out (Tensor), the output tensor. Examples: + .. code-block:: python import paddle diff --git a/python/paddle/geometric/reindex.py b/python/paddle/geometric/reindex.py index ade88222bbe5545100209c624ae97a3936567304..c14e5a551f116c03d8fec6da95e6ea050385e55b 100644 --- a/python/paddle/geometric/reindex.py +++ b/python/paddle/geometric/reindex.py @@ -28,25 +28,19 @@ def reindex_graph( Reindex Graph API. This API is mainly used in Graph Learning domain, which should be used - in conjunction with `graph_sample_neighbors` API. And the main purpose + in conjunction with `paddle.geometric.sample_neighbors` API. And the main purpose is to reindex the ids information of the input nodes, and return the corresponding graph edges after reindex. - **Notes**: - The number in x should be unique, otherwise it would cause potential errors. - We will reindex all the nodes from 0. - - Take input nodes x = [0, 1, 2] as an example. - If we have neighbors = [8, 9, 0, 4, 7, 6, 7], and count = [2, 3, 2], - then we know that the neighbors of 0 is [8, 9], the neighbors of 1 - is [0, 4, 7], and the neighbors of 2 is [6, 7]. - Then after graph_reindex, we will have 3 different outputs: - 1. reindex_src: [3, 4, 0, 5, 6, 7, 6] - 2. reindex_dst: [0, 0, 1, 1, 1, 2, 2] - 3. out_nodes: [0, 1, 2, 8, 9, 4, 7, 6] - We can see that the numbers in `reindex_src` and `reindex_dst` is the corresponding index + Take input nodes x = [0, 1, 2] as an example. If we have neighbors = [8, 9, 0, 4, 7, 6, 7], and count = [2, 3, 2], + then we know that the neighbors of 0 is [8, 9], the neighbors of 1 is [0, 4, 7], and the neighbors of 2 is [6, 7]. + Then after graph_reindex, we will have 3 different outputs: reindex_src: [3, 4, 0, 5, 6, 7, 6], reindex_dst: [0, 0, 1, 1, 1, 2, 2] + and out_nodes: [0, 1, 2, 8, 9, 4, 7, 6]. We can see that the numbers in `reindex_src` and `reindex_dst` is the corresponding index of nodes in `out_nodes`. + Note: + The number in x should be unique, otherwise it would cause potential errors. We will reindex all the nodes from 0. + Args: x (Tensor): The input nodes which we sample neighbors for. The available data type is int32, int64. @@ -64,30 +58,26 @@ def reindex_graph( For more information, please refer to :ref:`api_guide_Name`. Returns: - reindex_src (Tensor): The source node index of graph edges after reindex. - reindex_dst (Tensor): The destination node index of graph edges after reindex. - out_nodes (Tensor): The index of unique input nodes and neighbors before reindex, - where we put the input nodes `x` in the front, and put neighbor - nodes in the back. + - reindex_src (Tensor), the source node index of graph edges after reindex. - Examples: + - reindex_dst (Tensor), the destination node index of graph edges after reindex. - .. code-block:: python + - out_nodes (Tensor), the index of unique input nodes and neighbors before reindex, where we put the input nodes `x` in the front, and put neighbor nodes in the back. - import paddle - - x = [0, 1, 2] - neighbors = [8, 9, 0, 4, 7, 6, 7] - count = [2, 3, 2] - x = paddle.to_tensor(x, dtype="int64") - neighbors = paddle.to_tensor(neighbors, dtype="int64") - count = paddle.to_tensor(count, dtype="int32") + Examples: + .. code-block:: python - reindex_src, reindex_dst, out_nodes = \ - paddle.geometric.reindex_graph(x, neighbors, count) - # reindex_src: [3, 4, 0, 5, 6, 7, 6] - # reindex_dst: [0, 0, 1, 1, 1, 2, 2] - # out_nodes: [0, 1, 2, 8, 9, 4, 7, 6] + import paddle + x = [0, 1, 2] + neighbors = [8, 9, 0, 4, 7, 6, 7] + count = [2, 3, 2] + x = paddle.to_tensor(x, dtype="int64") + neighbors = paddle.to_tensor(neighbors, dtype="int64") + count = paddle.to_tensor(count, dtype="int32") + reindex_src, reindex_dst, out_nodes = paddle.geometric.reindex_graph(x, neighbors, count) + # reindex_src: [3, 4, 0, 5, 6, 7, 6] + # reindex_dst: [0, 0, 1, 1, 1, 2, 2] + # out_nodes: [0, 1, 2, 8, 9, 4, 7, 6] """ use_buffer_hashtable = ( @@ -150,26 +140,18 @@ def reindex_heter_graph( Reindex HeterGraph API. This API is mainly used in Graph Learning domain, which should be used - in conjunction with `graph_sample_neighbors` API. And the main purpose + in conjunction with `paddle.geometric.sample_neighbors` API. And the main purpose is to reindex the ids information of the input nodes, and return the corresponding graph edges after reindex. - **Notes**: - The number in x should be unique, otherwise it would cause potential errors. - We support multi-edge-types neighbors reindexing in reindex_heter_graph api. - We will reindex all the nodes from 0. - - Take input nodes x = [0, 1, 2] as an example. - For graph A, suppose we have neighbors = [8, 9, 0, 4, 7, 6, 7], and count = [2, 3, 2], - then we know that the neighbors of 0 is [8, 9], the neighbors of 1 - is [0, 4, 7], and the neighbors of 2 is [6, 7]. - For graph B, suppose we have neighbors = [0, 2, 3, 5, 1], and count = [1, 3, 1], - then we know that the neighbors of 0 is [0], the neighbors of 1 is [2, 3, 5], - and the neighbors of 3 is [1]. - We will get following outputs: - 1. reindex_src: [3, 4, 0, 5, 6, 7, 6, 0, 2, 8, 9, 1] - 2. reindex_dst: [0, 0, 1, 1, 1, 2, 2, 0, 1, 1, 1, 2] - 3. out_nodes: [0, 1, 2, 8, 9, 4, 7, 6, 3, 5] + Take input nodes x = [0, 1, 2] as an example. For graph A, suppose we have neighbors = [8, 9, 0, 4, 7, 6, 7], and count = [2, 3, 2], + then we know that the neighbors of 0 is [8, 9], the neighbors of 1 is [0, 4, 7], and the neighbors of 2 is [6, 7]. For graph B, + suppose we have neighbors = [0, 2, 3, 5, 1], and count = [1, 3, 1], then we know that the neighbors of 0 is [0], the neighbors of 1 is [2, 3, 5], + and the neighbors of 3 is [1]. We will get following outputs: reindex_src: [3, 4, 0, 5, 6, 7, 6, 0, 2, 8, 9, 1], reindex_dst: [0, 0, 1, 1, 1, 2, 2, 0, 1, 1, 1, 2] + and out_nodes: [0, 1, 2, 8, 9, 4, 7, 6, 3, 5]. + + Note: + The number in x should be unique, otherwise it would cause potential errors. We support multi-edge-types neighbors reindexing in reindex_heter_graph api. We will reindex all the nodes from 0. Args: x (Tensor): The input nodes which we sample neighbors for. The available @@ -188,37 +170,34 @@ def reindex_heter_graph( For more information, please refer to :ref:`api_guide_Name`. Returns: - reindex_src (Tensor): The source node index of graph edges after reindex. - reindex_dst (Tensor): The destination node index of graph edges after reindex. - out_nodes (Tensor): The index of unique input nodes and neighbors before reindex, - where we put the input nodes `x` in the front, and put neighbor - nodes in the back. + - reindex_src (Tensor), the source node index of graph edges after reindex. - Examples: + - reindex_dst (Tensor), the destination node index of graph edges after reindex. + - out_nodes (Tensor), the index of unique input nodes and neighbors before reindex, + where we put the input nodes `x` in the front, and put neighbor + nodes in the back. + + Examples: .. code-block:: python - import paddle - - x = [0, 1, 2] - neighbors_a = [8, 9, 0, 4, 7, 6, 7] - count_a = [2, 3, 2] - x = paddle.to_tensor(x, dtype="int64") - neighbors_a = paddle.to_tensor(neighbors_a, dtype="int64") - count_a = paddle.to_tensor(count_a, dtype="int32") - - neighbors_b = [0, 2, 3, 5, 1] - count_b = [1, 3, 1] - neighbors_b = paddle.to_tensor(neighbors_b, dtype="int64") - count_b = paddle.to_tensor(count_b, dtype="int32") - - neighbors = [neighbors_a, neighbors_b] - count = [count_a, count_b] - reindex_src, reindex_dst, out_nodes = \ - paddle.geometric.reindex_heter_graph(x, neighbors, count) - # reindex_src: [3, 4, 0, 5, 6, 7, 6, 0, 2, 8, 9, 1] - # reindex_dst: [0, 0, 1, 1, 1, 2, 2, 0, 1, 1, 1, 2] - # out_nodes: [0, 1, 2, 8, 9, 4, 7, 6, 3, 5] + import paddle + x = [0, 1, 2] + neighbors_a = [8, 9, 0, 4, 7, 6, 7] + count_a = [2, 3, 2] + x = paddle.to_tensor(x, dtype="int64") + neighbors_a = paddle.to_tensor(neighbors_a, dtype="int64") + count_a = paddle.to_tensor(count_a, dtype="int32") + neighbors_b = [0, 2, 3, 5, 1] + count_b = [1, 3, 1] + neighbors_b = paddle.to_tensor(neighbors_b, dtype="int64") + count_b = paddle.to_tensor(count_b, dtype="int32") + neighbors = [neighbors_a, neighbors_b] + count = [count_a, count_b] + reindex_src, reindex_dst, out_nodes = paddle.geometric.reindex_heter_graph(x, neighbors, count) + # reindex_src: [3, 4, 0, 5, 6, 7, 6, 0, 2, 8, 9, 1] + # reindex_dst: [0, 0, 1, 1, 1, 2, 2, 0, 1, 1, 1, 2] + # out_nodes: [0, 1, 2, 8, 9, 4, 7, 6, 3, 5] """ use_buffer_hashtable = ( diff --git a/python/paddle/geometric/sampling/neighbors.py b/python/paddle/geometric/sampling/neighbors.py index 1353bd5814fa8ff4643810400f18cfe5fb302ef4..111b81accaf49a05e788a1e1e2aceb50cc90d340 100644 --- a/python/paddle/geometric/sampling/neighbors.py +++ b/python/paddle/geometric/sampling/neighbors.py @@ -65,27 +65,28 @@ def sample_neighbors( For more information, please refer to :ref:`api_guide_Name`. Returns: - out_neighbors (Tensor): The sample neighbors of the input nodes. - out_count (Tensor): The number of sampling neighbors of each input node, and the shape - should be the same with `input_nodes`. - out_eids (Tensor): If `return_eids` is True, we will return the eid information of the - sample edges. + - out_neighbors (Tensor), the sample neighbors of the input nodes. + + - out_count (Tensor), the number of sampling neighbors of each input node, and the shape + should be the same with `input_nodes`. + + - out_eids (Tensor), if `return_eids` is True, we will return the eid information of the + sample edges. Examples: .. code-block:: python - import paddle - # edges: (3, 0), (7, 0), (0, 1), (9, 1), (1, 2), (4, 3), (2, 4), - # (9, 5), (3, 5), (9, 6), (1, 6), (9, 8), (7, 8) - row = [3, 7, 0, 9, 1, 4, 2, 9, 3, 9, 1, 9, 7] - colptr = [0, 2, 4, 5, 6, 7, 9, 11, 11, 13, 13] - nodes = [0, 8, 1, 2] - sample_size = 2 - row = paddle.to_tensor(row, dtype="int64") - colptr = paddle.to_tensor(colptr, dtype="int64") - nodes = paddle.to_tensor(nodes, dtype="int64") - out_neighbors, out_count = \ - paddle.geometric.sample_neighbors(row, colptr, nodes, - sample_size=sample_size) + + import paddle + # edges: (3, 0), (7, 0), (0, 1), (9, 1), (1, 2), (4, 3), (2, 4), + # (9, 5), (3, 5), (9, 6), (1, 6), (9, 8), (7, 8) + row = [3, 7, 0, 9, 1, 4, 2, 9, 3, 9, 1, 9, 7] + colptr = [0, 2, 4, 5, 6, 7, 9, 11, 11, 13, 13] + nodes = [0, 8, 1, 2] + sample_size = 2 + row = paddle.to_tensor(row, dtype="int64") + colptr = paddle.to_tensor(colptr, dtype="int64") + nodes = paddle.to_tensor(nodes, dtype="int64") + out_neighbors, out_count = paddle.geometric.sample_neighbors(row, colptr, nodes, sample_size=sample_size) """