class ov::pass::SoftmaxFusion¶
Overview¶
SoftmaxFusion transformation replaces following graphs: More…
#include <softmax_fusion.hpp>
class SoftmaxFusion: public ov::pass::MatcherPass
{
public:
// methods
"SoftmaxFusion""0" OPENVINO_RTTI(, );
};
Inherited Members¶
public:
// typedefs
typedef DiscreteTypeInfo type_info_t;
// methods
boolconst PassPropertyMask& get_property() const;
voidconst std::string& set_name();
std::string get_name() const;
voidconst param_callback& set_callback();
virtual voidconst std::shared_ptr<PassConfig>& set_pass_config();
std::shared_ptr<PassConfig> get_pass_config();
boolconst std::shared_ptr<const Node>& transformation_callback();
virtual const type_info_t& get_type_info() const = 0;
"ov::pass::MatcherPass" OPENVINO_RTTI();
MatcherPass&const MatcherPass& operator = ();
boolstd::shared_ptr<ov::Node> apply();
template <, >
std::shared_ptr<T>Args&&... register_new_node();
template <>
std::shared_ptr<T>const std::shared_ptr<T>& register_new_node();
std::shared_ptr<ov::Node>const std::shared_ptr<ov::Node>& register_new_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¶
SoftmaxFusion transformation replaces following graphs:
+---------------+
│ │
│ input │
│ │
+---------------+
│ │
│ v
│ +-----------+
│ │ │
│ │ ReduceMax │
│ │ │
│ +-----------+
│ │
│ │
v v
+---------------+
│ │
│ Sub │
│ │
+---------------+
|
|
v
+---------------+
│ │
│ Exp │
│ │
+---------------+
│ │
│ v
│ +-----------+
│ │ │
│ │ ReduceSum │
│ │ │
│ +-----------+
│ │
│ │
v v
+-------------+
| │
| Div │
│ │
+-------------+
and +———— + │ │ │ input │ │ │ +———— +
v +———— + │ │ │ Exp │ │ │ +———— + │ │ │ v │ +——– + │ │ │ │ │ ReduceSum │ │ │ │ │ +——– + │ │ │ │ v v +———- + | │ | Div │ │ │ +———- +
to a single Softmax node
Restrictions:
ReduceMax and ReduceSum axes must be scalar constants and they have to point to the same axis