class ov::pass::MultiplyConvolutionFusion

Overview

Multiply->Convolution fusion replaces following graph: More…

#include <mul_conv_fusion.hpp>

class MultiplyConvolutionFusion: public ov::pass::MatcherPass
{
public:
    // methods

    OPENVINO_RTTI("MultiplyConvolutionFusion", "0");
};

Inherited Members

public:
    // typedefs

    typedef DiscreteTypeInfo type_info_t;

    // methods

    bool get_property(const PassPropertyMask& prop_mask) const;
    void set_name(const std::string& name);
    std::string get_name() const;
    void set_callback(const param_callback& callback);
    virtual void set_pass_config(const std::shared_ptr<PassConfig>& pass_config);
    std::shared_ptr<PassConfig> get_pass_config();
    bool m_transformation_callback(const std::shared_ptr<const Node>& node);
    bool transformation_callback(const std::shared_ptr<const Node>& node);
    virtual const type_info_t& get_type_info() const = 0;
    OPENVINO_RTTI("ov::pass::MatcherPass");
    MatcherPass& operator = (const MatcherPass&);
    bool apply(std::shared_ptr<ov::Node> node);

    template <typename T, class... Args>
    std::shared_ptr<T> register_new_node(Args&&... args);

    template <typename T>
    std::shared_ptr<T> register_new_node(const std::shared_ptr<T>& node);

    std::shared_ptr<ov::Node> register_new_node_(const std::shared_ptr<ov::Node>& node);
    const std::vector<std::shared_ptr<ov::Node>>& get_new_nodes();
    void clear_new_nodes();
    std::shared_ptr<pattern::Matcher> get_matcher();

Detailed Documentation

Multiply->Convolution fusion replaces following graph:

+—- + +——- + | Input | | Constant | +—- + +——- + | | | | v v +——- + +—— + | Multiply | | Weights | +——- + +—— + | | | | v v +————- + | Convolution Op | +————- +

to following:

                 +---------+   +----------+
                 | Weights |   | Constant |
                 +---------+   +----------+
                      |            |
                      ------  ------
                           |  |
                           v  v
+-------+              +----------+
| Input |              | Multiply |
+-------+              +----------+
    |                       |
    -----------    ----------
              |    |
              v    v
         +----------------+
         | Convolution Op |
         +----------------+

where ‘Convolution Op’ is one of:

  • Convolution

  • ConvolutionBackpropData

  • GroupConvolution

  • GroupConvolutionBackpropData

Restrictions:

  • weights’ shape is static

  • if the constant input to Multiply has the same rank as ‘input’, the constant first dimension has to be 1

  • constant input to Multiply has to be broadcastable to weights when ‘Convolution Op’ is either Convolution or GroupConvolution

  • shape of a constant input to Multiply has to be in one of following forms: (1), (1, 1, …, 1), (C, 1, …, 1), (1, C, 1, …, 1) when ‘Convolution Op’ is either ConvolutionBackpropData or GroupConvolutionBackpropData