class ngraph::pass::low_precision::PrecisionsRestriction

Overview

PrecisionsRestriction defines a set of precision restrictions for each input port Common precision restriction can be also set for several ports. In this case, an operation will have the same precision for mentioned. More…

#include <precisions_restriction.hpp>

class PrecisionsRestriction
{
public:
    // typedefs

    typedef std::vector<std::pair<std::vector<size_t>, std::vector<ngraph::element::Type>>> PrecisionsByPorts;

    // fields

    ngraph::Node::type_info_t operationType;
    bool specifyVersion;
    PrecisionsByPorts precisionsByPorts;

    // construction

    PrecisionsRestriction();

    PrecisionsRestriction(
        const ngraph::Node::type_info_t operationType,
        const bool specifyVersion,
        const PrecisionsByPorts& precisionsByPorts
        );

    // methods

    template <typename T>
    static PrecisionsRestriction create(
        const PrecisionsByPorts& precisionsByPorts,
        const bool specifyVersion = false
        );

    template <typename T>
    static PrecisionsByPorts getPrecisionsByOperationType(std::vector<PrecisionsRestriction>& restrictions);
};

Detailed Documentation

PrecisionsRestriction defines a set of precision restrictions for each input port Common precision restriction can be also set for several ports. In this case, an operation will have the same precision for mentioned.

// One restriction for each port PrecisionsRestriction::create<ngraph::opset1::Convolution> ({ {{0}, {ngraph::element::u8}}, {{1}, {ngraph::element::i8}}, }),

// Common precision restriction for several ports: // both inputs will have the same precision PrecisionsRestriction::create<ngraph::opset5::LSTMSequence> ({ {{0, 1}, {ngraph::element::u8, ngraph::element::i8}} }),