diff options
author | 2018-01-02 11:32:34 -0800 | |
---|---|---|
committer | 2018-01-02 11:39:54 -0800 | |
commit | e0b647e10ae1e96e350b2ae75d14fd35fd3a0557 (patch) | |
tree | 5d0b6dcc3190c267aa73bb5f234133785105ab9b | |
parent | 9388969277d80731d62cd2cfce051504e2dc9c4a (diff) |
Support PadV2, MirrorPad, and MirrorPadGrad ops.
PiperOrigin-RevId: 180571040
-rw-r--r-- | tensorflow/core/grappler/op_types.cc | 11 | ||||
-rw-r--r-- | tensorflow/core/grappler/op_types.h | 2 | ||||
-rw-r--r-- | tensorflow/core/grappler/optimizers/layout_optimizer.cc | 3 |
3 files changed, 14 insertions, 2 deletions
diff --git a/tensorflow/core/grappler/op_types.cc b/tensorflow/core/grappler/op_types.cc index cb912b5391..dac96730e6 100644 --- a/tensorflow/core/grappler/op_types.cc +++ b/tensorflow/core/grappler/op_types.cc @@ -175,6 +175,12 @@ bool IsMerge(const NodeDef& node) { bool IsMinimum(const NodeDef& node) { return node.op() == "Minimum"; } +bool IsMirrorPad(const NodeDef& node) { return node.op() == "MirrorPad"; } + +bool IsMirrorPadGrad(const NodeDef& node) { + return node.op() == "MirrorPadGrad"; +} + bool IsMod(const NodeDef& node) { return node.op() == "Mod"; } bool IsMul(const NodeDef& node) { return node.op() == "Mul"; } @@ -188,7 +194,10 @@ bool IsNextIteration(const NodeDef& node) { return op == "NextIteration" || op == "RefNextIteration"; } -bool IsPad(const NodeDef& node) { return node.op() == "Pad"; } +bool IsPad(const NodeDef& node) { + const auto& op = node.op(); + return op == "Pad" || op == "PadV2"; +} bool IsPlaceholder(const NodeDef& node) { const auto& op = node.op(); diff --git a/tensorflow/core/grappler/op_types.h b/tensorflow/core/grappler/op_types.h index 59217e3d05..9b72ba4be5 100644 --- a/tensorflow/core/grappler/op_types.h +++ b/tensorflow/core/grappler/op_types.h @@ -71,6 +71,8 @@ bool IsLogicalOr(const NodeDef& node); bool IsMaximum(const NodeDef& node); bool IsMerge(const NodeDef& node); bool IsMinimum(const NodeDef& node); +bool IsMirrorPad(const NodeDef& node); +bool IsMirrorPadGrad(const NodeDef& node); bool IsMod(const NodeDef& node); bool IsMul(const NodeDef& node); bool IsMatMul(const NodeDef& node); diff --git a/tensorflow/core/grappler/optimizers/layout_optimizer.cc b/tensorflow/core/grappler/optimizers/layout_optimizer.cc index 2786b8cf62..845aabcb23 100644 --- a/tensorflow/core/grappler/optimizers/layout_optimizer.cc +++ b/tensorflow/core/grappler/optimizers/layout_optimizer.cc @@ -1752,7 +1752,8 @@ class DataLayoutOptimizer : GraphProcessor { node_processor.reset(new IdentityNProcessor(opt_cxt)); } else if (IsMerge(*node)) { node_processor.reset(new MergeProcessor(opt_cxt)); - } else if (IsPad(*node)) { + } else if (IsPad(*node) || IsMirrorPad(*node) || + IsMirrorPadGrad(*node)) { node_processor.reset(new PadProcessor(opt_cxt)); } else if (IsReverseV2(*node)) { node_processor.reset(new ReverseProcessor(opt_cxt)); |