Extend Pad Fusion for AveragePool (#21556)

### Description
This extends the existing pad_fusion for AveragePool operator i.e. fuse
Pad if it is followed by AveragePool operator.



### Motivation and Context
<!-- - Why is this change required? What problem does it solve?
- If it fixes an open issue, please link to the issue here. -->
This commit is contained in:
Sumit Agarwal 2024-07-30 09:35:45 -07:00 committed by GitHub
parent 530a2d7b41
commit 1637f22d39
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 3 additions and 2 deletions

View file

@ -12,7 +12,7 @@ namespace onnxruntime {
* It matches following pattern:
* Pad
* |
* Conv/MaxPool
* Conv/MaxPool/AveragePool
*/
bool PadFusion::SatisfyCondition(const Graph& graph, const Node& node, const logging::Logger&) const {
// if Pad has input axis, don't fuse it.
@ -28,6 +28,7 @@ bool PadFusion::SatisfyCondition(const Graph& graph, const Node& node, const log
const Node& child_node = *node.OutputNodesBegin();
if (!graph_utils::IsSupportedOptypeVersionAndDomain(child_node, "Conv", {1, 11}) &&
!graph_utils::IsSupportedOptypeVersionAndDomain(child_node, "AveragePool", {1, 7, 10, 11, 19}) &&
!graph_utils::IsSupportedOptypeVersionAndDomain(child_node, "MaxPool", {1, 8, 10, 11, 12})) {
return false;
}

View file

@ -8,7 +8,7 @@
namespace onnxruntime {
/*
* This fusion submerges a Pad operator to it's child
* Conv or MaxPool operator, if and only if PadFusion::SatisfyCondition()
* Conv or MaxPool or AveragePool operator, if and only if PadFusion::SatisfyCondition()
* is true.
*/
class PadFusion : public RewriteRule {