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