diff options
Diffstat (limited to 'tensorflow/core/grappler/op_types.cc')
-rw-r--r-- | tensorflow/core/grappler/op_types.cc | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/tensorflow/core/grappler/op_types.cc b/tensorflow/core/grappler/op_types.cc index 2227904dbf..bdeb5c66fc 100644 --- a/tensorflow/core/grappler/op_types.cc +++ b/tensorflow/core/grappler/op_types.cc @@ -135,6 +135,18 @@ bool IsDequeueOp(const NodeDef& node) { bool IsDiv(const NodeDef& node) { return node.op() == "Div"; } +bool IsElementWiseMonotonic(const NodeDef& node) { + static const std::unordered_set<string>* element_wise_monotonic_ops = + CHECK_NOTNULL((new std::unordered_set<string>{ + "Relu", + "Relu6", + "Sigmoid", + "Sqrt", + "Tanh", + })); + return element_wise_monotonic_ops->count(node.op()) > 0; +} + bool IsEluGrad(const NodeDef& node) { return node.op() == "EluGrad"; } bool IsEnter(const NodeDef& node) { @@ -617,7 +629,8 @@ bool HasOpDef(const NodeDef& node) { } bool IsIdempotent(const NodeDef& node) { - return IsValueAndOrderAndShapePreserving(node) && IsFreeOfSideEffect(node); + return IsValueAndOrderAndShapePreserving(node) && IsFreeOfSideEffect(node) && + !ModifiesFrameInfo(node); } } // namespace grappler |