diff --git a/python/paddle/fluid/tests/unittests/test_graph_send_recv_op.py b/python/paddle/fluid/tests/unittests/test_graph_send_recv_op.py index 73c1525519066..1b7d8213e75ac 100644 --- a/python/paddle/fluid/tests/unittests/test_graph_send_recv_op.py +++ b/python/paddle/fluid/tests/unittests/test_graph_send_recv_op.py @@ -25,11 +25,11 @@ def graph_send_recv_wrapper(x, src_index, dst_index, - pool_type="sum", + reduce_op="sum", out_size=None, name=None): return paddle.geometric.send_u_recv(x, src_index, dst_index, - pool_type.lower(), out_size, name) + reduce_op.lower(), out_size, name) class TestGraphSendRecvMaxOp(OpTest): diff --git a/python/paddle/fluid/tests/unittests/test_graph_send_ue_recv_op.py b/python/paddle/fluid/tests/unittests/test_graph_send_ue_recv_op.py index b001b4d56b9c0..25f4d3cb660f0 100644 --- a/python/paddle/fluid/tests/unittests/test_graph_send_ue_recv_op.py +++ b/python/paddle/fluid/tests/unittests/test_graph_send_ue_recv_op.py @@ -103,7 +103,7 @@ def compute_graph_send_ue_recv_for_sum(inputs, attributes): y = inputs['Y'] src_index = inputs['Src_index'] dst_index = inputs['Dst_index'] - compute_type = attributes['compute_type'] + message_op = attributes['compute_type'] gather_x = x[src_index] out_shp = [ @@ -112,9 +112,9 @@ def compute_graph_send_ue_recv_for_sum(inputs, attributes): results = np.zeros(out_shp, dtype=x.dtype) # Calculate forward output. - if compute_type == 'ADD': + if message_op == 'ADD': x_compute_y = gather_x + y - elif compute_type == 'MUL': + elif message_op == 'MUL': x_compute_y = gather_x * y for index, s_id in enumerate(dst_index): results[s_id, :] += x_compute_y[index, :] @@ -126,7 +126,7 @@ def compute_graph_send_ue_recv_for_mean(inputs, attributes): y = inputs['Y'] src_index = inputs['Src_index'] dst_index = inputs['Dst_index'] - compute_type = attributes['compute_type'] + message_op = attributes['compute_type'] gather_x = x[src_index] out_shp = [ @@ -135,9 +135,9 @@ def compute_graph_send_ue_recv_for_mean(inputs, attributes): results = np.zeros(out_shp, dtype=x.dtype) # Calculate forward output. - if compute_type == 'ADD': + if message_op == 'ADD': x_compute_y = gather_x + y - elif compute_type == 'MUL': + elif message_op == 'MUL': x_compute_y = gather_x * y count = np.zeros(out_shp[0], dtype=np.int32) for index, s_id in enumerate(dst_index): @@ -155,8 +155,8 @@ def compute_graph_send_ue_recv_for_max_min(inputs, attributes): y = inputs['Y'] src_index = inputs['Src_index'] dst_index = inputs['Dst_index'] - compute_type = attributes['compute_type'] - pool_type = attributes['pool_type'] + message_op = attributes['compute_type'] + reduce_op = attributes['pool_type'] gather_x = x[src_index] out_shp = [ @@ -165,13 +165,13 @@ def compute_graph_send_ue_recv_for_max_min(inputs, attributes): results = np.zeros(out_shp, dtype=x.dtype) # Calculate forward output. - if compute_type == 'ADD': + if message_op == 'ADD': x_compute_y = gather_x + y - elif compute_type == 'MUL': + elif message_op == 'MUL': x_compute_y = gather_x * y first_set = set() - if pool_type == 'MAX': + if reduce_op == 'MAX': for index, s_id in enumerate(dst_index): if s_id not in first_set: results[s_id, :] += x_compute_y[index, :] @@ -179,7 +179,7 @@ def compute_graph_send_ue_recv_for_max_min(inputs, attributes): else: results[s_id, :] = np.maximum(results[s_id, :], x_compute_y[index, :]) - elif pool_type == 'MIN': + elif reduce_op == 'MIN': for index, s_id in enumerate(dst_index): if s_id not in first_set: results[s_id, :] += x_compute_y[index, :] @@ -188,7 +188,7 @@ def compute_graph_send_ue_recv_for_max_min(inputs, attributes): results[s_id, :] = np.minimum(results[s_id, :], x_compute_y[index, :]) else: - raise ValueError("Invalid pool_type, only MAX, MIN supported!") + raise ValueError("Invalid reduce_op, only MAX, MIN supported!") # Calculate backward gradient. x_gradient = np.zeros_like(x) @@ -206,7 +206,7 @@ def compute_graph_send_ue_recv_for_max_min(inputs, attributes): for j in range(bcast_info.out_len): x_add = bcast_info.lhs_offset[j] if use_broadcast else j y_add = bcast_info.rhs_offset[j] if use_broadcast else j - if compute_type == 'ADD': + if message_op == 'ADD': if len(x_off.shape) == 1 and len(y_off.shape) == 1: val = x_off[x_add] + y_off[y_add] x_grad_off[x_add] += 1 * (val == out_off[j]) @@ -224,7 +224,7 @@ def compute_graph_send_ue_recv_for_max_min(inputs, attributes): val == out_off[out_add_0][out_add_1]) y_grad_off[y_add_0][y_add_1] += 1 * ( val == out_off[out_add_0][out_add_1]) - elif compute_type == 'MUL': + elif message_op == 'MUL': if len(x_off.shape) == 1 and len(y_off.shape) == 1: val = x_off[x_add] * y_off[y_add] x_grad_off[x_add] += 1 * (val == out_off[j]) * y_off[y_add] @@ -254,13 +254,13 @@ def graph_send_ue_recv_wrapper(x, y, src_index, dst_index, - compute_type="add", - pool_type="sum", + message_op="add", + reduce_op="sum", out_size=None, name=None): return paddle.geometric.send_ue_recv(x, y, src_index, dst_index, - compute_type.lower(), - pool_type.lower(), out_size, name) + message_op.lower(), reduce_op.lower(), + out_size, name) class TestGraphSendUERecvSumOp(OpTest): @@ -277,7 +277,7 @@ def setUp(self): 'Src_index': self.src_index, 'Dst_index': self.dst_index } - self.attrs = {'compute_type': self.compute_type, 'pool_type': 'SUM'} + self.attrs = {'compute_type': self.message_op, 'pool_type': 'SUM'} out = compute_graph_send_ue_recv_for_sum(self.inputs, self.attrs) @@ -289,7 +289,7 @@ def set_config(self): index = np.random.randint(0, 10, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'ADD' + self.message_op = 'ADD' def test_check_output(self): self.check_output(check_eager=True) @@ -306,7 +306,7 @@ def set_config(self): index = np.random.randint(0, 10, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'MUL' + self.message_op = 'MUL' class TestSumCase2(TestGraphSendUERecvSumOp): @@ -317,7 +317,7 @@ def set_config(self): index = np.random.randint(0, 10, (150, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'ADD' + self.message_op = 'ADD' class TestSumCase3(TestGraphSendUERecvSumOp): @@ -328,7 +328,7 @@ def set_config(self): index = np.random.randint(0, 10, (150, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'MUL' + self.message_op = 'MUL' class TestSumCase4(TestGraphSendUERecvSumOp): @@ -339,7 +339,7 @@ def set_config(self): index = np.random.randint(0, 10, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'ADD' + self.message_op = 'ADD' class TestSumCase5(TestGraphSendUERecvSumOp): @@ -350,7 +350,7 @@ def set_config(self): index = np.random.randint(0, 10, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'MUL' + self.message_op = 'MUL' class TestSumCase6(TestGraphSendUERecvSumOp): @@ -361,7 +361,7 @@ def set_config(self): index = np.random.randint(0, 100, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'ADD' + self.message_op = 'ADD' class TestSumCase7(TestGraphSendUERecvSumOp): @@ -372,7 +372,7 @@ def set_config(self): index = np.random.randint(0, 100, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'MUL' + self.message_op = 'MUL' class TestGraphSendUERecvMeanOp(OpTest): @@ -389,7 +389,7 @@ def setUp(self): 'Src_index': self.src_index, 'Dst_index': self.dst_index } - self.attrs = {'compute_type': self.compute_type, 'pool_type': 'MEAN'} + self.attrs = {'compute_type': self.message_op, 'pool_type': 'MEAN'} out, dst_count = compute_graph_send_ue_recv_for_mean( self.inputs, self.attrs) @@ -402,7 +402,7 @@ def set_config(self): index = np.random.randint(0, 10, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'ADD' + self.message_op = 'ADD' def test_check_output(self): self.check_output(check_eager=True) @@ -419,7 +419,7 @@ def set_config(self): index = np.random.randint(0, 10, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'MUL' + self.message_op = 'MUL' class TestMeanCase2(TestGraphSendUERecvMeanOp): @@ -430,7 +430,7 @@ def set_config(self): index = np.random.randint(0, 10, (150, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'ADD' + self.message_op = 'ADD' class TestMeanCase3(TestGraphSendUERecvMeanOp): @@ -441,7 +441,7 @@ def set_config(self): index = np.random.randint(0, 10, (150, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'MUL' + self.message_op = 'MUL' class TestMeanCase4(TestGraphSendUERecvMeanOp): @@ -452,7 +452,7 @@ def set_config(self): index = np.random.randint(0, 10, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'ADD' + self.message_op = 'ADD' class TestMeanCase5(TestGraphSendUERecvMeanOp): @@ -463,7 +463,7 @@ def set_config(self): index = np.random.randint(0, 10, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'MUL' + self.message_op = 'MUL' class TestMeanCase6(TestGraphSendUERecvMeanOp): @@ -474,7 +474,7 @@ def set_config(self): index = np.random.randint(0, 100, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'ADD' + self.message_op = 'ADD' class TestMeanCase7(TestGraphSendUERecvMeanOp): @@ -485,7 +485,7 @@ def set_config(self): index = np.random.randint(0, 100, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'MUL' + self.message_op = 'MUL' class TestGraphSendUERecvMaxOp(OpTest): @@ -502,7 +502,7 @@ def setUp(self): 'Src_index': self.src_index, 'Dst_index': self.dst_index } - self.attrs = {'compute_type': self.compute_type, 'pool_type': 'MAX'} + self.attrs = {'compute_type': self.message_op, 'pool_type': 'MAX'} out, self.gradients = compute_graph_send_ue_recv_for_max_min( self.inputs, self.attrs) @@ -515,7 +515,7 @@ def set_config(self): index = np.random.randint(0, 10, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'ADD' + self.message_op = 'ADD' def test_check_output(self): self.check_output(check_eager=True) @@ -535,7 +535,7 @@ def set_config(self): index = np.random.randint(0, 10, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'MUL' + self.message_op = 'MUL' class TestMaxCase2(TestGraphSendUERecvMaxOp): @@ -546,7 +546,7 @@ def set_config(self): index = np.random.randint(0, 10, (150, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'ADD' + self.message_op = 'ADD' class TestMaxCase3(TestGraphSendUERecvMaxOp): @@ -557,7 +557,7 @@ def set_config(self): index = np.random.randint(0, 10, (150, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'MUL' + self.message_op = 'MUL' class TestMaxCase4(TestGraphSendUERecvMaxOp): @@ -568,7 +568,7 @@ def set_config(self): index = np.random.randint(0, 10, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'ADD' + self.message_op = 'ADD' class TestMaxCase5(TestGraphSendUERecvMaxOp): @@ -579,7 +579,7 @@ def set_config(self): index = np.random.randint(0, 10, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'MUL' + self.message_op = 'MUL' class TestMaxCase6(TestGraphSendUERecvMaxOp): @@ -590,7 +590,7 @@ def set_config(self): index = np.random.randint(0, 100, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'ADD' + self.message_op = 'ADD' class TestMaxCase7(TestGraphSendUERecvMaxOp): @@ -601,7 +601,7 @@ def set_config(self): index = np.random.randint(0, 100, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'MUL' + self.message_op = 'MUL' class TestGraphSendUERecvMinOp(OpTest): @@ -618,7 +618,7 @@ def setUp(self): 'Src_index': self.src_index, 'Dst_index': self.dst_index } - self.attrs = {'compute_type': self.compute_type, 'pool_type': 'MIN'} + self.attrs = {'compute_type': self.message_op, 'pool_type': 'MIN'} out, self.gradients = compute_graph_send_ue_recv_for_max_min( self.inputs, self.attrs) @@ -631,7 +631,7 @@ def set_config(self): index = np.random.randint(0, 10, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'ADD' + self.message_op = 'ADD' def test_check_output(self): self.check_output(check_eager=True) @@ -651,7 +651,7 @@ def set_config(self): index = np.random.randint(0, 10, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'MUL' + self.message_op = 'MUL' class TestMinCase2(TestGraphSendUERecvMinOp): @@ -662,7 +662,7 @@ def set_config(self): index = np.random.randint(0, 10, (150, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'ADD' + self.message_op = 'ADD' class TestMinCase3(TestGraphSendUERecvMinOp): @@ -673,7 +673,7 @@ def set_config(self): index = np.random.randint(0, 10, (150, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'MUL' + self.message_op = 'MUL' class TestMinCase4(TestGraphSendUERecvMinOp): @@ -684,7 +684,7 @@ def set_config(self): index = np.random.randint(0, 10, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'ADD' + self.message_op = 'ADD' class TestMinCase5(TestGraphSendUERecvMinOp): @@ -695,7 +695,7 @@ def set_config(self): index = np.random.randint(0, 10, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'MUL' + self.message_op = 'MUL' class TestMinCase6(TestGraphSendUERecvMinOp): @@ -706,7 +706,7 @@ def set_config(self): index = np.random.randint(0, 100, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'ADD' + self.message_op = 'ADD' class TestMinCase7(TestGraphSendUERecvMinOp): @@ -717,7 +717,7 @@ def set_config(self): index = np.random.randint(0, 100, (15, 2)).astype(np.int64) self.src_index = index[:, 0] self.dst_index = index[:, 1] - self.compute_type = 'MUL' + self.message_op = 'MUL' class API_GeometricSendUERecvTest(unittest.TestCase): diff --git a/python/paddle/geometric/message_passing/send_recv.py b/python/paddle/geometric/message_passing/send_recv.py index ae7ec1a0f2ad9..cebd927566c97 100644 --- a/python/paddle/geometric/message_passing/send_recv.py +++ b/python/paddle/geometric/message_passing/send_recv.py @@ -25,7 +25,7 @@ def send_u_recv(x, src_index, dst_index, - pool_type="sum", + reduce_op="sum", out_size=None, name=None): """ @@ -35,7 +35,7 @@ def send_u_recv(x, This api is mainly used in Graph Learning domain, and the main purpose is to reduce intermediate memory consumption in the process of message passing. Take `x` as the input tensor, we first use `src_index` to gather the corresponding data, and then use `dst_index` to update the corresponding position of output tensor - in different pooling types, like sum, mean, max, or min. Besides, we can use `out_size` to set necessary output shape. + in different reduce ops, like sum, mean, max, or min. Besides, we can use `out_size` to set necessary output shape. .. code-block:: text @@ -49,7 +49,7 @@ def send_u_recv(x, dst_index = [1, 2, 1, 0] - pool_type = "sum" + reduce_op = "sum" out_size = None @@ -65,7 +65,7 @@ def send_u_recv(x, src_index (Tensor): An 1-D tensor, and the available data type is int32, int64. dst_index (Tensor): An 1-D tensor, and should have the same shape as `src_index`. The available data type is int32, int64. - pool_type (str): Different pooling types, including `sum`, `mean`, `max`, `min`. + reduce_op (str): Different reduce ops, including `sum`, `mean`, `max`, `min`. Default value is `sum`. out_size (int|Tensor|None): We can set `out_size` to get necessary output shape. If not set or out_size is smaller or equal to 0, then this input will not be used. @@ -89,7 +89,7 @@ def send_u_recv(x, indexes = paddle.to_tensor([[0, 1], [1, 2], [2, 1], [0, 0]], dtype="int32") src_index = indexes[:, 0] dst_index = indexes[:, 1] - out = paddle.geometric.send_u_recv(x, src_index, dst_index, pool_type="sum") + out = paddle.geometric.send_u_recv(x, src_index, dst_index, reduce_op="sum") # Outputs: [[0., 2., 3.], [2., 8., 10.], [1., 4., 5.]] x = paddle.to_tensor([[0, 2, 3], [1, 4, 5], [2, 6, 7]], dtype="float32") @@ -97,22 +97,22 @@ def send_u_recv(x, src_index = indexes[:, 0] dst_index = indexes[:, 1] out_size = paddle.max(dst_index) + 1 - out = paddle.geometric.send_u_recv(x, src_index, dst_index, pool_type="sum", out_size=out_size) + out = paddle.geometric.send_u_recv(x, src_index, dst_index, reduce_op="sum", out_size=out_size) # Outputs: [[0., 2., 3.], [[2., 8., 10.]]] x = paddle.to_tensor([[0, 2, 3], [1, 4, 5], [2, 6, 7]], dtype="float32") indexes = paddle.to_tensor([[0, 1], [2, 1], [0, 0]], dtype="int32") src_index = indexes[:, 0] dst_index = indexes[:, 1] - out = paddle.geometric.send_u_recv(x, src_index, dst_index, pool_type="sum") + out = paddle.geometric.send_u_recv(x, src_index, dst_index, reduce_op="sum") # Outputs: [[0., 2., 3.], [2., 8., 10.], [0., 0., 0.]] """ - if pool_type not in ["sum", "mean", "max", "min"]: + if reduce_op not in ["sum", "mean", "max", "min"]: raise ValueError( - "pool_type should be `sum`, `mean`, `max` or `min`, but received %s" - % pool_type) + "reduce_op should be `sum`, `mean`, `max` or `min`, but received %s" + % reduce_op) # TODO(daisiming): Should we add judgement for out_size: max(dst_index) + 1. @@ -120,13 +120,13 @@ def send_u_recv(x, out_size = convert_out_size_to_list(out_size) out, tmp = _C_ops.graph_send_recv(x, src_index, dst_index, None, 'pool_type', - pool_type.upper(), 'out_size', + reduce_op.upper(), 'out_size', out_size) return out if in_dygraph_mode(): out_size = convert_out_size_to_list(out_size) return _C_ops.final_state_graph_send_recv(x, src_index, dst_index, - pool_type.upper(), out_size) + reduce_op.upper(), out_size) check_variable_and_dtype( x, "X", ("float32", "float64", "int32", "int64", "float16"), @@ -148,7 +148,7 @@ def send_u_recv(x, stop_gradient=True) inputs = {"X": x, "Src_index": src_index, "Dst_index": dst_index} - attrs = {"pool_type": pool_type.upper()} + attrs = {"pool_type": reduce_op.upper()} get_out_size_tensor_inputs(inputs=inputs, attrs=attrs, out_size=out_size, @@ -168,8 +168,8 @@ def send_ue_recv(x, y, src_index, dst_index, - compute_type="add", - pool_type="sum", + message_op="add", + reduce_op="sum", out_size=None, name=None): """ @@ -196,9 +196,9 @@ def send_ue_recv(x, dst_index = [1, 2, 1, 0] - compute_type = "add" + message_op = "add" - pool_type = "sum" + reduce_op = "sum" out_size = None @@ -215,8 +215,8 @@ def send_ue_recv(x, src_index (Tensor): An 1-D tensor, and the available data type is int32, int64. dst_index (Tensor): An 1-D tensor, and should have the same shape as `src_index`. The available data type is int32, int64. - compute_type (str): Different compute types for x and e, including `add`, `sub`, `mul`, `div`. - pool_type (str): Different pooling types, including `sum`, `mean`, `max`, `min`. + message_op (str): Different compute types for x and e, including `add`, `sub`, `mul`, `div`. + reduce_op (str): Different pooling types, including `sum`, `mean`, `max`, `min`. Default value is `sum`. out_size (int|Tensor|None): We can set `out_size` to get necessary output shape. If not set or out_size is smaller or equal to 0, then this input will not be used. @@ -241,7 +241,7 @@ def send_ue_recv(x, indexes = paddle.to_tensor([[0, 1], [1, 2], [2, 1], [0, 0]], dtype="int32") src_index = indexes[:, 0] dst_index = indexes[:, 1] - out = paddle.geometric.send_ue_recv(x, y, src_index, dst_index, compute_type="add", pool_type="sum") + out = paddle.geometric.send_ue_recv(x, y, src_index, dst_index, message_op="add", reduce_op="sum") # Outputs: [[1., 3., 4.], [4., 10., 12.], [2., 5., 6.]] x = paddle.to_tensor([[0, 2, 3], [1, 4, 5], [2, 6, 7]], dtype="float32") @@ -250,7 +250,7 @@ def send_ue_recv(x, src_index = indexes[:, 0] dst_index = indexes[:, 1] out_size = paddle.max(dst_index) + 1 - out = paddle.geometric.send_ue_recv(x, y, src_index, dst_index, compute_type="add", pool_type="sum", out_size=out_size) + out = paddle.geometric.send_ue_recv(x, y, src_index, dst_index, message_op="add", reduce_op="sum", out_size=out_size) # Outputs: [[1., 3., 4.], [[4., 10., 12.]]] x = paddle.to_tensor([[0, 2, 3], [1, 4, 5], [2, 6, 7]], dtype="float32") @@ -258,28 +258,28 @@ def send_ue_recv(x, indexes = paddle.to_tensor([[0, 1], [2, 1], [0, 0]], dtype="int32") src_index = indexes[:, 0] dst_index = indexes[:, 1] - out = paddle.geometric.send_ue_recv(x, y, src_index, dst_index, compute_type="add", pool_type="sum") + out = paddle.geometric.send_ue_recv(x, y, src_index, dst_index, message_op="add", reduce_op="sum") # Outputs: [[1., 3., 4.], [4., 10., 12.], [0., 0., 0.]] """ - if compute_type not in ["add", "sub", "mul", "div"]: + if message_op not in ["add", "sub", "mul", "div"]: raise ValueError( - "compute_type should be `add`, `sub`, `mul`, `div`, but received %s" - % compute_type) + "message_op should be `add`, `sub`, `mul`, `div`, but received %s" % + message_op) - if pool_type not in ["sum", "mean", "max", "min"]: + if reduce_op not in ["sum", "mean", "max", "min"]: raise ValueError( - "pool_type should be `sum`, `mean`, `max` or `min`, but received %s" - % pool_type) + "reduce_op should be `sum`, `mean`, `max` or `min`, but received %s" + % reduce_op) x, y = reshape_lhs_rhs(x, y) - if compute_type == 'sub': - compute_type = 'add' + if message_op == 'sub': + message_op = 'add' y = -y - if compute_type == "div": - compute_type = 'mul' + if message_op == "div": + message_op = 'mul' y = 1. / y # TODO(daisiming): Should we add judgement for out_size: max(dst_index) + 1. @@ -288,15 +288,15 @@ def send_ue_recv(x, out_size = convert_out_size_to_list(out_size) out, tmp = _C_ops.graph_send_ue_recv(x, y, src_index, dst_index, None, 'compute_type', - compute_type.upper(), 'pool_type', - pool_type.upper(), 'out_size', + message_op.upper(), 'pool_type', + reduce_op.upper(), 'out_size', out_size) return out if in_dygraph_mode(): out_size = convert_out_size_to_list(out_size) return _C_ops.final_state_graph_send_ue_recv(x, y, src_index, dst_index, - compute_type.upper(), - pool_type.upper(), + message_op.upper(), + reduce_op.upper(), out_size) check_variable_and_dtype( @@ -322,10 +322,7 @@ def send_ue_recv(x, stop_gradient=True) inputs = {"X": x, "Y": y, "Src_index": src_index, "Dst_index": dst_index} - attrs = { - "compute_type": compute_type.upper(), - "pool_type": pool_type.upper() - } + attrs = {"compute_type": message_op.upper(), "pool_type": reduce_op.upper()} get_out_size_tensor_inputs(inputs=inputs, attrs=attrs, out_size=out_size,