From 168d4d1db1c9f45f7d4c79489c1f48f1812fad6c Mon Sep 17 00:00:00 2001 From: Pratyush Patel <pratyushpatel.1995@gmail.com> Date: Sat, 6 Oct 2018 10:20:12 -0700 Subject: [PATCH] [RELAY][OP] Add relay minimum op (#1840) --- docs/langref/relay_op.rst | 4 +++- python/tvm/relay/op/tensor.py | 18 ++++++++++++++++++ src/relay/op/tensor/binary.cc | 4 ++++ tests/python/relay/test_op_level4.py | 3 ++- 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/docs/langref/relay_op.rst b/docs/langref/relay_op.rst index 6563903a9..856640456 100644 --- a/docs/langref/relay_op.rst +++ b/docs/langref/relay_op.rst @@ -61,6 +61,7 @@ This level enables typical convnet models. tvm.relay.less tvm.relay.less_equal tvm.relay.maximum + tvm.relay.minimum **Level 5: Vision/Image Operators** @@ -89,4 +90,5 @@ Level 4 Definitions .. autofunction:: tvm.relay.greater_equal .. autofunction:: tvm.relay.less .. autofunction:: tvm.relay.less_equal -.. autofunction:: tvm.relay.maximum \ No newline at end of file +.. autofunction:: tvm.relay.maximum +.. autofunction:: tvm.relay.minimum diff --git a/python/tvm/relay/op/tensor.py b/python/tvm/relay/op/tensor.py index d6e4f32ae..859bfdc26 100644 --- a/python/tvm/relay/op/tensor.py +++ b/python/tvm/relay/op/tensor.py @@ -246,6 +246,24 @@ def maximum(lhs, rhs): return _make.maximum(lhs, rhs) +def minimum(lhs, rhs): + """Minimum with numpy-style broadcasting. + + Parameters + ---------- + lhs : relay.Expr + The left hand side input data + rhs : relay.Expr + The right hand side input data + + Returns + ------- + result : relay.Expr + The computed result. + """ + return _make.minimum(lhs, rhs) + + def right_shift(lhs, rhs): """Right shift with numpy-style broadcasting. diff --git a/src/relay/op/tensor/binary.cc b/src/relay/op/tensor/binary.cc index 7f8f6884c..11175f215 100644 --- a/src/relay/op/tensor/binary.cc +++ b/src/relay/op/tensor/binary.cc @@ -45,6 +45,10 @@ RELAY_REGISTER_BINARY_OP("maximum") .describe("Elementwise maximum of two tensors with broadcasting") .set_support_level(4); +RELAY_REGISTER_BINARY_OP("minimum") +.describe("Elementwise minimum of two tensors with broadcasting") +.set_support_level(4); + // Comparisons #define RELAY_REGISTER_CMP_OP(OpName) \ TVM_REGISTER_API("relay.op._make." OpName) \ diff --git a/tests/python/relay/test_op_level4.py b/tests/python/relay/test_op_level4.py index a4b8cebd2..72876780f 100644 --- a/tests/python/relay/test_op_level4.py +++ b/tests/python/relay/test_op_level4.py @@ -23,7 +23,8 @@ def test_cmp_type(): def test_binary_broadcast(): for op in [relay.right_shift, relay.left_shift, - relay.maximum]: + relay.maximum, + relay.minimum]: ib = relay.ir_builder.IRBuilder() x = ib.param("x", relay.TensorType((10, 4), "int32")) y = ib.param("y", relay.TensorType((5, 10, 1), "int32")) -- GitLab