Class ov::frontend::InputModel#

class InputModel#

InputModel class represents an original, not yet converted model graph in a framework format given services to find places of interest in a graph or specialize/edit the model before conversion.

Editing requests may affect ability to convert the original model to OV Model. Aim to provide these editing capabilities is to unlock conversion for models that are not natively supported “as-is” because of undefined shapes, types or operations.

Specific front-end implementation is supposed to have a lazy implementation for all methods, not doing a complete load of a model without an explicit method call. For example, the list of all inputs are not pre-fetched by InputModel derived class instance creation, but only when get_inputs method is called. But it is not an obligation, the most convenient way should be chosen depending on the framework model representation.

All editing requests affect the model representation that is held behind the scene successive method calls observe a new graph structure.

Note

Class methods are divided into several groups: searching for places, naming and annotation, topology editing, setting tensor properties.

Public Functions

virtual std::vector<Place::Ptr> get_inputs() const#

Returns all inputs for a model An input is a place in a graph where data is supposed to flow inside graph from outside. It can be a tensor, port, operation; which kind of place can be an output is FW dependent. Usually framework models have a dedicated artifact to code model input, it can be a tensor without producer, that writes to it in ONNX, or a special operation like Placeholder in TensorFlow.

Returns:

A vector of input place references

virtual std::vector<Place::Ptr> get_outputs() const#

Returns all output for a model An output is a terminal place in a graph where data escapes the flow. It can be a tensor, port, operation; which kind of place can be an output is FW dependent. In comparison to a graph input, the output is less formally defined thing and determination of initial list of outputs may include some conventions defined by a frontend itself, not a framework. For example, all output ports without consumers may be considered as outputs.

Returns:

A vector of output place references

virtual Place::Ptr get_place_by_tensor_name(const std::string &tensor_name) const#

Returns a tensor place by a tensor name following framework conventions, or nullptr if a tensor with this name doesn’t exist.

Parameters:

tensor_name – Name of tensor

Returns:

Tensor place corresponding to specified tensor name or nullptr if not exists

virtual Place::Ptr get_place_by_input_index(size_t input_idx) const#

Returns a tensor place by an input index.

Parameters:

input_idx – Index of model input

Returns:

Tensor place corresponding to specified input index or nullptr

virtual Place::Ptr get_place_by_operation_name(const std::string &operation_name) const#

Returns an operation place by an operation name following framework conventions, or nullptr if an operation with this name doesn’t exist.

Parameters:

operation_name – Name of operation

Returns:

Place representing operation or nullptr if not exists

virtual Place::Ptr get_place_by_operation_name_and_input_port(const std::string &operation_name, int input_port_index)#

Returns an input port place by operation name and appropriate port index.

Parameters:
  • operation_name – Name of operation

  • input_port_index – Index of input port for this operation

Returns:

Place representing input port of operation or nullptr if not exists

virtual Place::Ptr get_place_by_operation_name_and_output_port(const std::string &operation_name, int output_port_index)#

Returns an output port place by operation name and appropriate port index.

Parameters:
  • operation_name – Name of operation

  • output_port_index – Index of output port for this operation

Returns:

Place representing output port of operation or nullptr if not exists

virtual void set_name_for_tensor(const Place::Ptr &tensor, const std::string &new_name)#

Sets name for tensor. Overwrites existing names of this place.

Parameters:
  • tensorTensor place

  • new_name – New name for this tensor

virtual void add_name_for_tensor(const Place::Ptr &tensor, const std::string &new_name)#

Adds new name for tensor.

Parameters:
  • tensorTensor place

  • new_name – New name to be added to this place

virtual void set_name_for_operation(const Place::Ptr &operation, const std::string &new_name)#

Sets name for operation. Overwrites existing names of this place.

Parameters:
  • operation – Operation place

  • new_name – New name for this operation

virtual void free_name_for_tensor(const std::string &name)#

Unassign specified name from tensor place(s)

Parameters:

name – Name of tensor

virtual void free_name_for_operation(const std::string &name)#

Unassign specified name from operation place(s)

Parameters:

name – Name of operation

virtual void set_name_for_dimension(const Place::Ptr &place, size_t shape_dim_index, const std::string &dim_name)#

Set name for a particular dimension of a place (e.g. batch dimension)

Parameters:
  • placeModel’s place

  • shape_dim_indexDimension index

  • dim_name – Name to assign on this dimension

virtual void cut_and_add_new_input(const Place::Ptr &place, const std::string &new_name_optional = "")#

Cut immediately before this place and assign this place as new input; prune all nodes that don’t contribute to any output.

Parameters:
  • place – New place to be assigned as input

  • new_name_optional – Optional new name assigned to this input place

virtual void cut_and_add_new_output(const Place::Ptr &place, const std::string &new_name_optional = "")#

Cut immediately after this place and assign this place as new output; prune all nodes that don’t contribute to any output.

Parameters:
  • place – New place to be assigned as output

  • new_name_optional – Optional new name assigned to this output place

virtual Place::Ptr add_output(const Place::Ptr &place)#

Assign this place as new output or add necessary nodes to represent a new output.

Parameters:

place – Anchor point to add an output

Returns:

new output place, may be the same as a given place

virtual void remove_output(const Place::Ptr &place)#

Removes any sinks directly attached to this place with all inbound data flow if it is not required by any other output.

Parameters:

placeModel place

virtual void override_all_outputs(const std::vector<Place::Ptr> &outputs)#

Replaces all existing outputs with new ones removing all data flow that is not required for new outputs.

Parameters:
  • outputs – Vector with places that will become new outputs; may intersect existing outputs.

  • outputs – Array of new output places

virtual void override_all_inputs(const std::vector<Place::Ptr> &inputs)#

Modifies the graph to use new inputs instead of existing ones. New inputs should completely satisfy all existing outputs.

Parameters:

inputs – Array of new input places

virtual void extract_subgraph(const std::vector<Place::Ptr> &inputs, const std::vector<Place::Ptr> &outputs)#

Leaves only subgraph that are defined by new inputs and new outputs.

Parameters:
  • inputs – Array of new input places

  • outputs – Array of new output places

virtual void set_partial_shape(const Place::Ptr &place, const ov::PartialShape &shape)#

Defines all possible shape that may be used for this place; place should be uniquely refer to some data. This partial shape will be converted to corresponding shape of results OV nodes and will define shape inference when the model is converted to OV.

Parameters:
  • placeModel place

  • shape – Partial shape for this place

virtual ov::PartialShape get_partial_shape(const Place::Ptr &place) const#

Returns current partial shape used for this place.

Parameters:

placeModel place

Returns:

Partial shape for this place

virtual void set_element_type(const Place::Ptr &place, const ov::element::Type &type)#

Sets new element type for a place.

Parameters:
  • placeModel place

  • type – New element type

virtual ov::element::Type get_element_type(const Place::Ptr &place) const#

Returns current element type used for this place.

Parameters:

placeModel place

Returns:

Element type for this place

virtual void set_tensor_value(const Place::Ptr &place, const void *value)#

Freezes a tensor with statically defined value or replace existing value for already constant node or tensor.

Parameters:
  • placeTensor place

  • value – Value for tensor place representing a memory buffer

virtual void set_tensor_partial_value(const Place::Ptr &place, const void *min_value, const void *max_value)#

Defines partial value (lower bound and upper bound) for a tensor place TODO: more details for min_value and max_value format; who defines shape?

Parameters:
  • placeTensor place

  • min_value – Lower bound of partial value for tensor place

  • max_value – Upper bound of partial value for tensor place