グループ基本#
- group ov_model_cpp_api
ov::Model、動的および静的な形状、タイプを操作するための OpenVINO コア C++ API
関数
- template<typename ForwardIt>
size_t shape_size(ForwardIt start_dim, const ForwardIt end_dim)# 形状の次元のサブセット内の要素の数。範囲 [start_dim;end_dim) の次元の積を返します。
- template<typename SHAPE_TYPE>
size_t shape_size(const SHAPE_TYPE &shape)# 形状にまたがる要素の数。
- class Dimension#
- #include <dimension.hpp>
形状または形状のようなオブジェクト内の、動的 (実行時まで未確定) な次元を表すクラス。
静的次元は、value_type から暗黙的に変換される場合があります。動的次元は、Dimension() または Dimension::dynamic() を使用して構築されます。
パブリック関数
- Dimension(value_type dimension)#
静的次元を構築します。
- パラメーター:
dimension – 次元の値。
- Dimension(value_type min_dimension, value_type max_dimension)#
制限範囲を持つ動的次元を構築します。
- パラメーター:
min_dimension – 次元の包括的な下限。
max_dimension – 次元の包括的な上限。
- Dimension(const std::string &str)#
文字列から次元を構築します。
- パラメーター:
str – 次元に解析する文字列。
- Dimension() = default#
範囲 [0, …] の動的次元を構築します。
- inline bool is_static() const#
この次元が静的かどうかを確認します。
- 戻り値:
次元が静的である場合は
true
、そうでない場合はfalse
。
- inline bool is_dynamic() const#
この次元が動的かどうかを確認します。
- 戻り値:
次元が静的である場合は
false
、そうでない場合はtrue
。
- value_type get_length() const#
この次元を
value_type
に変換します。この次元は静的かつ負でない値である必要があります。- スロー
std::invalid_argument – この次元が動的または負の場合。
- bool same_scheme(const Dimension &dim) const#
この次元が引数と同じスキーム (両方とも動的、または等しい) を表しているかどうかを確認します。
- パラメーター:
dim – この次元と比較する他の次元。
- 戻り値:
この次元と
dim
が両方とも動的である場合、または両方とも静的で等しい場合はtrue
、それ以外の場合はfalse
。
- bool compatible(const Dimension &d) const#
この次元が引数次元と結合できるかどうか確認します。
2 つの次元を結合できる場合、それらの次元は互換性があると見なされます。(Dimension::merge を参照してください。)
- パラメーター:
d – この次元と比較する次元。
- 戻り値:
この次元が
d
と互換性がある場合はtrue
、それ以外の場合はfalse
。
- bool relaxes(const Dimension &d) const#
この次元が緩和論証であるかどうかを確認します。
次元
d1
とd2
が静的かつ等しい場合、またはd1
が動的である場合、次元d1
はd2
を緩和します (または緩和されます)。d1.relaxes(d2)
はd2.refines(d1)
と同等です。- パラメーター:
d – この次元と比較する次元。
- 戻り値:
この次元が
d
を緩和する場合はtrue
、そうでない場合はfalse
。
- bool refines(const Dimension &d) const#
この次元が洗練論証であるかどうかを確認します。
次元
d1
とd2
が静的かつ等しい場合、またはd2
が動的である場合、次元d2
はd1
を緩和します (または緩和されます)。d1.refines(d2)
はd2.relaxes(d1)
と同等です。- パラメーター:
d – この次元と比較する次元。
- 戻り値:
この次元が
d
を緩和する場合はtrue
、そうでない場合はfalse
。
- Dimension operator+(const Dimension &dim) const#
Dimensionの加算演算子。
- パラメーター:
dim – 加算の右オペランド。
- 戻り値:
入力を囲む最小の間隔次元
- Dimension operator-(const Dimension &dim) const#
Dimensionの減算演算子。
- パラメーター:
dim – 減算の右オペランド。
- 戻り値:
入力を囲む最小の間隔次元
- Dimension operator/(const value_type divisor) const#
Dimensionを value_type パラメーターで割った除算演算子
- パラメーター:
divisor – 除算の右オペランド。
- 戻り値:
入力を囲む最小の間隔次元
- inline Dimension &operator/=(const value_type divisor)#
Dimensionの分割演算子。
- パラメーター:
divisor – 乗算の右オペランド。
- 戻り値:
*this
を値*this * dim
に更新した後の*this
への参照。
- Dimension operator*(const Dimension &dim) const#
Dimensionの乗算演算子。
- パラメーター:
dim – 乗算の右オペランド。
- 戻り値:
すべての “produces” を含む最小の間隔。この間隔または
dim
のいずれかの長さが0
の場合は 0、どちらかが無制限の場合は無制限、それ以外の場合は長さの積になります。
- inline Dimension &operator+=(const Dimension &dim)#
Dimensionのアドイン演算子。
- パラメーター:
dim – 加算の右オペランド。
- 戻り値:
*this
を値*this + dim
に更新した後の*this
への参照。
- inline Dimension &operator*=(const Dimension &dim)#
Dimensionの乗算演算子。
- パラメーター:
dim – 乗算の右オペランド。
- 戻り値:
*this
を値*this * dim
に更新した後の*this
への参照。
Dimensionのシンボルをセットます。
パブリック静的関数
- static bool merge(Dimension &dst, const Dimension &d1, const Dimension &d2)#
2 つのDimensionオブジェクトを結合してみます。
d1
が動的である場合、d2
をdst
に書き込み、true
を返します。d2
が動的である場合、d1
をdst
に書き込み、true
を返します。d1
とd2
が静的で等しい場合は、d1
をdst
に書き込み、true
を返します。d1
とd2
が静的で等しくない場合は、dst
は変更されず、false
を返します。
- パラメーター:
dst – [out] 結合されたDimensionを書き込むための参照。
d1 – 結合する最初の次元。
d2 – 結合する 2 番目の次元。
- 戻り値:
結合が成功した場合は
true
、それ以外の場合はfalse
を返します。
- Dimension(value_type dimension)#
- class Extension#
- #include <extension.hpp>
このクラスは、OpenVINO 拡張機能の基本インターフェイスを提供します。
以下でサブクラス化されます: ov::BaseOpExtension、ov::frontend::ConversionExtensionBase、ov::frontend::DecoderTransformationExtension、ov::frontend::ProgressReporterExtension、ov::frontend::TelemetryExtension
- class Model : public std::enable_shared_from_this<Model>#
- #include <model.hpp>
ユーザー定義モデル。
パブリック関数
- explicit Model(const ov::OutputVector &results, const std::string &name = "")#
モデルを構築します。結果からグラフをトラバースすることで、パラメーターと変数のリストが自動的に生成されます。
- Model(const ov::OutputVector &results, const ov::SinkVector &sinks, const std::string &name = "")#
モデルを構築します。結果とシンクからグラフをトラバースすることで、パラメーターと変数のリストが自動的に生成されます。
- const PartialShape &get_output_partial_shape(size_t i) const#
要素 i の部分形状を返します。
- const std::string &get_name() const#
モデルの一意な名前を取得します。
- 戻り値:
モデルの一意な名前への const 参照。
- void set_friendly_name(const std::string &name)#
モデルのフレンドリー名を設定します。これはモデルの一意な名前を上書きせず、get_friendly_name() を介して取得されます。主にデバッグに使用されます。
- パラメーター:
name – 設定するフレンドリー名
- const std::string &get_friendly_name() const#
モデルのフレンドリー名を取得します。set_friendly_name でフレンドリー名が設定されていない場合は、モデルの一意な名前が返されます。
- 戻り値:
モデルのフレンドリー名への const 参照。
- size_t get_graph_size() const#
グラフ内のすべてのノードサイズとすべての定数データサイズの合計を返します。これは、グラフの相対的なサイズを比較する以外にはほとんど価値がなく、グラフの実際のメモリー消費量とは見なされません。
- bool is_dynamic() const#
モデルで定義された操作のいずれかに部分的な形状が含まれている場合は true を返します。
モデルの
parameter_index
パラメーターをparameter
に置き換えます。Parameter_index
番目のパラメーターのすべてのユーザーはparameter
にリダイレクトされ、モデル・パラメーター・リスト内のparameter_index
番目のエントリーはparameter
に置き換えられます。- パラメーター:
parameter_index – 置き換えるパラメーターのインデックス。
parameter –
parameter_index
番目のパラメーターを置き換えるパラメーター。
パラメーターのインデックス、または -1。
- int64_t get_result_index(const ov::Output<ov::Node> &value) const#
“value” 出力オブジェクトによって表されるモデルの結果インデックスを返します。渡された出力がモデルの結果に関連していない場合、このメソッドは -1 を返します。
- int64_t get_result_index(const ov::Output<const ov::Node> &value) const#
渡された出力がモデルの結果に関連していない場合、このメソッドは -1 を返します。
- bool evaluate(ov::TensorVector &output_tensors, const ov::TensorVector &input_tensors, ov::EvaluationContext &evaluation_context) const#
入力のモデルを評価し、結果を出力します。
- パラメーター:
output_tensors – 計算する出力のテンソル。結果ごとに 1 つ
input_tensors – 入力用のテンソル。入力ごとに 1 つ
evaluation_context – モデルを評価する際に使用する追加の設定と属性のストレージ。この追加情報はノード間で共有できます。
- bool evaluate(ov::TensorVector &output_tensors, const ov::TensorVector &input_tensors) const#
入力のモデルを評価し、結果を出力します。
- パラメーター:
output_tensors – 計算する出力のテンソル。結果ごとに 1 つ
input_tensors – 入力用のテンソル。入力ごとに 1 つ
- void add_sinks(const ov::SinkVector &sinks)#
新しいシンクノードをリストに追加します。メソッドはグラフを検証しないため、すべての変更後に手動で実行する必要があります。
- パラメーター:
sinks – 新しいシンクノード
シンクのリストからシンクノードを削除します。メソッドはグラフからノードを削除しません。
- パラメーター:
sink – 削除するシンク
- void add_results(const ov::ResultVector &results)#
新しい結果ノードをリストに追加します。メソッドはグラフを検証しないため、すべての変更後に手動で実行する必要があります。
- パラメーター:
results – 新しい結果ノード
結果のリストから結果ノードを削除します。メソッドはグラフからノードを削除しません。
- パラメーター:
result – 削除する結果ノード
- void add_parameters(const ov::ParameterVector ¶ms)#
新しいパラメーター・ノードをリストに追加します。
メソッドはグラフを変更または検証しないため、手動で実行する必要があります。例えば、
ReadValue
ノードをParameter
に置き換える場合は、次の手順を実行します:グラフ内のノード
ReadValue
をParameter
に置き換えますリストに新しい入力を追加するには add_parameter() を呼び出します
変更の正確性を確認するためグラフ検証を呼び出します
- パラメーター:
params – 新しいパラメーター・ノード
パラメーターのリストから結果ノードを削除します。メソッドはグラフからノードを削除しません。パラメーターを他の操作に手動で置き換える必要があります。使用上の注意: パラメーターのインデックスを変更できます。
このメソッドの使用例として、入力を変数に置き換えることが挙げられます。それには、次の手順を実行する必要があります:
Parameter
ノードはReadValue
に置き換える必要がありますリストから入力を削除するには remove_parameter(param) を呼び出します
パラメーター・インデックスがどこに保存/使用されているか確認し、インデックスは変更される可能性があるため、すべての入力に対して更新します
すべての変更をチェックするためにグラフ検証を呼び出します
- パラメーター:
param – 削除するパラメーター・ノード
- void add_variables(const ov::op::util::VariableVector &variables)#
新しい変数をリストに追加します。メソッドはグラフを検証しないため、すべての変更後に手動で実行する必要があります。
- パラメーター:
variables – 追加する新しい変数
- void remove_variable(const ov::op::util::Variable::Ptr &variable)#
変数リストから変数を削除します。メソッドは、この変数を使用したノードをグラフから削除しません。
- パラメーター:
variable – 削除する変数
- inline const ov::op::util::VariableVector &get_variables() const#
モデルの変数リストを返します。
- ov::op::util::Variable::Ptr get_variable_by_id(const std::string &variable_id) const#
指定された variable_id の変数を返します。
- inline RTMap &get_rt_info()#
ランタイム情報を返します。
- 戻り値:
ランタイム情報を含む ov::AnyMap への参照
- inline const RTMap &get_rt_info() const#
定数のランタイム情報を返します。
- 戻り値:
ランタイム情報を含む const ov::AnyMap への参照
- template<class T, class ...Args, typename std::enable_if<!std::is_same<T, ov::Any>::value, bool>::type = true>
inline const T &get_rt_info(Args... args) const# パスのランタイム属性を返します。パスが存在しない場合は ov::Exception をスローします。
- テンプレート・パラメーター:
T – 返される値のタイプ
Args – 可変長引数のタイプ
- パラメーター:
args – ランタイム属性へのパス
- 戻り値:
ランタイム情報からの値への定数参照
- template<class T, class ...Args, typename std::enable_if<std::is_same<T, ov::Any>::value, bool>::type = true>
inline const T &get_rt_info(Args... args) const# パスのランタイム属性を返します。パスが存在しない場合は ov::Exception をスローします。
- テンプレート・パラメーター:
T – 返される値のタイプ
Args – 可変長引数のタイプ
- パラメーター:
args – ランタイム属性へのパス
- 戻り値:
ランタイム情報からの値への定数参照
- template<class T, typename std::enable_if<!std::is_same<T, ov::Any>::value, bool>::type = true>
inline const T &get_rt_info(const std::vector<std::string> &args) const# パスのランタイム属性を返します。パスが存在しない場合は ov::Exception をスローします。
- テンプレート・パラメーター:
T – 返される値のタイプ
- パラメーター:
args – ランタイム属性へのパスのベクトル
- 戻り値:
ランタイム情報からの値への定数参照
- template<class T, typename std::enable_if<std::is_same<T, ov::Any>::value, bool>::type = true>
inline const T &get_rt_info(const std::vector<std::string> &args) const# パスのランタイム属性を返します。パスが存在しない場合は ov::Exception をスローします。
- テンプレート・パラメーター:
T – 返される値のタイプ
- パラメーター:
args – ランタイム属性へのパスのベクトル
- 戻り値:
ランタイム情報からの値への定数参照
- template<class ...Args>
inline bool has_rt_info(Args... args) const# 指定されたパスがランタイム情報に存在するか確認します。
- テンプレート・パラメーター:
Args – 可変長引数のタイプ
- パラメーター:
args – ランタイム属性へのパス
- 戻り値:
パスが存在する場合は true、そうでない場合は false を返します
- bool has_rt_info(const std::vector<std::string> &args) const#
指定されたパスがランタイム情報に存在するか確認します。
- パラメーター:
args – ランタイム属性へのパスのベクトル
- 戻り値:
パスが存在する場合は true、そうでない場合は false を返します
- explicit Model(const ov::OutputVector &results, const std::string &name = "")#
- class Node : public std::enable_shared_from_this<Node>#
- #include <node.hpp>
ノードは、値データフローのグラフのバックボーンです。すべてのノードには、引数として 0 個以上のノードと 1 つの値 (テンソルまたは値のタプル (空の場合もあり)) があります。
ov::op::Op、ov::pass::pattern::op::Pattern によってサブクラス化されます
パブリック関数
- virtual void validate_and_infer_types()#
属性と入力に一貫性があることを確認し、出力の形状と要素タイプを計算します。何度でも実行できるように、具体的な子クラスによって実装される必要があります。
ノードが無効な場合にスローされます。
- virtual const ov::op::AutoBroadcastSpec &get_autob() const#
- 戻り値:
AutoBroadcastSpec
- virtual bool has_evaluate() const#
現在の操作の評価メソッドの可用性に関する情報を取得できます。
- virtual bool evaluate(ov::TensorVector &output_values, const ov::TensorVector &input_values) const#
input_values の op を評価し、結果を output_values に格納します。
- パラメーター:
output_values – 計算する出力のテンソル。結果ごとに 1 つ
input_values – 入力用のテンソル。入力ごとに 1 つ
- 戻り値:
成功したら true
- virtual bool evaluate(ov::TensorVector &output_values, const ov::TensorVector &input_values, const ov::EvaluationContext &evaluationContext) const#
input_values の op を評価し、結果を output_values に格納します。
- パラメーター:
output_values – 計算する出力のテンソル。結果ごとに 1 つ
input_values – 入力用のテンソル。入力ごとに 1 つ
evaluation_context – op を評価する際に使用する追加の設定と属性のストレージ。
- 戻り値:
成功したら true
- inline virtual OutputVector decompose_op() const#
FusedOp をコア openvino オペレーションで構成されるサブグラフに分解します。
- 戻り値:
サブグラフを構成するノードのベクトル。出力テンソルの順序は、FusedOp の出力テンソルと一致する必要があります。
- virtual const type_info_t &get_type_info() const = 0#
ノードのクラスの NodeTypeInfo を返します。type_info への移行中に、クラスがまだ更新されていない場合は、ノードのダミーの type_info を返します。
- void set_arguments(const NodeVector &arguments)#
引数を新しい引数に設定/置き換えます。
- void set_arguments(const OutputVector &arguments)#
引数を新しい引数に設定/置き換えます。
- void set_output_size(size_t output_size)#
出力数を設定します。
- virtual std::string description() const#
Add
やMultiply
など、ノードタイプの文字列名を取得します。クラス名は codegen で使用されるため、スペースを含めることはできません。- 戻り値:
ノードのタイプ名への const 参照
- const std::string &get_name() const#
ノードの一意な名前を取得します。
- 戻り値:
ノードの一意な名前への const 参照。
- void set_friendly_name(const std::string &name)#
ノードのフレンドリー名を設定します。これはノードの一意な名前を上書きせず、get_friendly_name() を介して取得されます。主にデバッグに使用されます。フレンドリー名は 1 度だけ設定できます。
- パラメーター:
name – 設定するフレンドリー名
- const std::string &get_friendly_name() const#
ノードのフレンドリー名を取得します。set_friendly_name でフレンドリー名が設定されていない場合は、ノードの一意な名前が返されます。
- 戻り値:
ノードのフレンドリー名への const 参照。
- virtual std::ostream &write_description(std::ostream &os, uint32_t depth = 0) const#
ノードの説明をストリームに書き込みます。
- パラメーター:
os – stream; 返される必要があります
depth – 記述する入力レベルの数
- 戻り値:
ストリーム os
- const std::vector<std::shared_ptr<Node>> &get_control_dependencies() const#
ノードに登録されている制御依存関係を取得します。
ノードが実行されるまで、このノードは実行できません。
このノードのノードへの依存関係を削除します。
- void clear_control_dependencies()#
このノードからすべての依存関係を削除します。
- void clear_control_dependents()#
このノードをすべての依存ノードから依存関係として削除します。
このノードは、source_node の制御依存関係を吸収します。
このノードは、source_node に依存するすべてのノードの従属ノードになります。
このノードの制御依存関係は置換によって置き換えられます。
- size_t get_output_size() const#
ノードからの出力数を返します。
- const PartialShape &get_output_partial_shape(size_t i) const#
出力 i の部分形状を返します。
- Output<const Node> get_default_output() const#
インデックスを指定せず、Output<Node> に変換する際の出力を返します。サポートされていない場合にスローされます。
- virtual size_t get_default_output_index() const#
デフォルト出力の出力を返します。デフォルト出力がない場合はスローします。
- size_t no_default_index() const#
デフォルトではスローされません。
- descriptor::Tensor &get_output_tensor(size_t i) const#
出力または入力 i のテンソルを返します。
- size_t get_input_size() const#
op の入力数を返します。
- const PartialShape &get_input_partial_shape(size_t i) const#
入力 i の部分形状を返します。
ノードと同じ要素タイプと形状を持つ 1 つの出力がある場合は True になります。
- NodeVector get_users(bool check_is_used = false) const#
現在のノードを使用するすべてのノードを取得します。
- Input<Node> input(size_t input_index)#
- スロー:
std::out_of_range – ノードに少なくとも
input_index+1
個の入力がない場合。- 戻り値:
このノードの
input_index
番目の入力へのハンドル。
- Input<const Node> input(size_t input_index) const#
- スロー:
std::out_of_range – ノードに少なくとも input_index+1 個の入力がない場合。
- 戻り値:
このノードの
input_index
番目の入力へのハンドル。
- virtual void validate_and_infer_types()#
- template<>
class Input<Node># - #include <node_input.hpp>
ノードの入力の 1 つに対するハンドル。
パブリック関数
- size_t get_index() const#
- 戻り値:
この入力ハンドルによって参照される入力のインデックス。
- OV_NO_DANGLING const element::Type & get_element_type () const
- 戻り値:
この入力ハンドルによって参照される入力の要素タイプ。
- OV_NO_DANGLING const Shape & get_shape () const
- 戻り値:
この入力ハンドルによって参照される入力の形状。
- OV_NO_DANGLING const PartialShape & get_partial_shape () const
- 戻り値:
この入力ハンドルによって参照される入力の部分形状。
- OV_NO_DANGLING descriptor::Tensor & get_tensor () const
- 戻り値:
この入力のテンソル記述子への参照。
- std::shared_ptr<descriptor::Tensor> get_tensor_ptr() const#
- 戻り値:
この入力のテンソル記述子への共有ポインター。
- bool get_is_relevant_to_shapes() const#
- 戻り値:
この入力がノードの出力形状に関連している場合は true、そうでない場合は false。
- bool get_is_relevant_to_values() const#
- 戻り値:
この入力がノードの出力値に関連している場合は true、そうでない場合は false。
- void replace_source_output(const Output<Node> &new_source_output) const#
この入力のソース出力を置き換えます。
- パラメーター:
new_source_output – この入力のソースを置き換える出力のハンドル。
- RTMap &get_rt_info()#
- 戻り値:
ランタイム情報マップへの参照
- OV_NO_DANGLING const RTMap & get_rt_info () const
- 戻り値:
ランタイム情報マップへの const 参照
- size_t get_index() const#
- template<>
class Input<const Node># - #include <node_input.hpp>
ノードの入力の 1 つに対するハンドル。
パブリック関数
- Input(const Node *node, size_t index)#
入力を構築します。
- パラメーター:
node – 入力ハンドルのノードへのポインター。
index – 入力のインデックス。
- size_t get_index() const#
- 戻り値:
この入力ハンドルによって参照される入力のインデックス。
- OV_NO_DANGLING const element::Type & get_element_type () const
- 戻り値:
この入力ハンドルによって参照される入力の要素タイプ。
- OV_NO_DANGLING const Shape & get_shape () const
- 戻り値:
この入力ハンドルによって参照される入力の形状。
- OV_NO_DANGLING const PartialShape & get_partial_shape () const
- 戻り値:
この入力ハンドルによって参照される入力の部分形状。
- OV_NO_DANGLING descriptor::Tensor & get_tensor () const
- 戻り値:
この入力のテンソル記述子への参照。
- std::shared_ptr<descriptor::Tensor> get_tensor_ptr() const#
- 戻り値:
この入力のテンソル記述子への共有ポインター。
- bool get_is_relevant_to_shapes() const#
- 戻り値:
この入力がノードの出力形状に関連している場合は true、そうでない場合は false。
- bool get_is_relevant_to_values() const#
- 戻り値:
この入力がノードの出力値に関連している場合は true、そうでない場合は false。
- OV_NO_DANGLING const RTMap & get_rt_info () const
- 戻り値:
ランタイム情報マップへの const 参照
- Input(const Node *node, size_t index)#
- template<>
class Output<Node># - #include <node_output.hpp>
ノードの出力の 1 つに対するハンドル。
パブリック関数
出力を構築します。
- パラメーター:
node – 出力ハンドルのノードへの
shared_ptr
。index – 出力のインデックス。
ノードの 0 番目の出力を参照して、出力を構築します。
- パラメーター:
node – 出力ハンドルのノードへの shared_ptr。
- Output() = default#
Null 出力。
- 戻り値:
この出力ハンドルによって参照されるノードへの
shared_ptr
。
- size_t get_index() const#
- 戻り値:
この出力ハンドルによって参照される出力のインデックス。
- OV_NO_DANGLING descriptor::Tensor & get_tensor () const
- 戻り値:
この出力のテンソル記述子への参照。
- std::shared_ptr<descriptor::Tensor> get_tensor_ptr() const#
- 戻り値:
この出力のテンソル ptr への共有ポイント。
- 戻り値:
この出力に新しいテンソル記述共有ポインターを設定します
- OV_NO_DANGLING const element::Type & get_element_type () const
- 戻り値:
この出力ハンドルによって参照される出力の要素タイプ。
- OV_NO_DANGLING const Shape & get_shape () const
- 戻り値:
この出力ハンドルによって参照される出力の形状。
- OV_NO_DANGLING const PartialShape & get_partial_shape () const
- 戻り値:
この出力ハンドルによって参照される出力の部分形状。
- RTMap &get_rt_info()#
- 戻り値:
ランタイム情報マップへの参照
- OV_NO_DANGLING const RTMap & get_rt_info () const
- 戻り値:
ランタイム情報マップへの const 参照
- OV_NO_DANGLING const std::unordered_set< std::string > & get_names () const
- 戻り値:
この出力に関連付けられたテンソル名
- void set_names(const std::unordered_set<std::string> &names)#
- 戻り値:
この出力に関連付けられたテンソル名を設定
- void add_names(const std::unordered_set<std::string> &names)#
- 戻り値:
この出力に関連付けられたテンソル名を追加
- template<>
class Output<const Node># - #include <node_output.hpp>
ノードの出力の 1 つに対するハンドル。
パブリック関数
- Output(const Node *node, size_t index)#
出力を構築します。
- パラメーター:
node – 出力ハンドルのノードへのポインター。
index – 出力のインデックス。
出力を構築します。
- パラメーター:
node – 出力ハンドルのノードへの shared_ptr。
index – 出力のインデックス。
ノードの 0 番目の出力を参照して、出力を構築します。
- パラメーター:
node – 出力ハンドルのノードへの shared_ptr。
- Output() = default#
Null 出力。
- 戻り値:
この出力ハンドルによって参照されるノードへの
shared_ptr
。
- size_t get_index() const#
- 戻り値:
この出力ハンドルによって参照される出力のインデックス。
- OV_NO_DANGLING descriptor::Tensor & get_tensor () const
- 戻り値:
この出力のテンソル記述子への参照。
- std::shared_ptr<descriptor::Tensor> get_tensor_ptr() const#
- 戻り値:
この出力のテンソル ptr への共有ポイント。
- OV_NO_DANGLING const element::Type & get_element_type () const
- 戻り値:
この出力ハンドルによって参照される出力の要素タイプ。
- OV_NO_DANGLING const Shape & get_shape () const
- 戻り値:
この出力ハンドルによって参照される出力の形状。
- OV_NO_DANGLING const PartialShape & get_partial_shape () const
- 戻り値:
この出力ハンドルによって参照される出力の部分形状。
- OV_NO_DANGLING const RTMap & get_rt_info () const
- 戻り値:
ランタイム情報マップへの const 参照
- OV_NO_DANGLING const std::unordered_set< std::string > & get_names () const
- 戻り値:
この出力に関連付けられたテンソル名
- Output(const Node *node, size_t index)#
- class PartialShape#
- #include <partial_shape.hpp>
クラスは部分的または全体的に動的な形状を表します。
PartialShape には次のものが含まれます:
動的ランク。(非公式表記:
?
)ランクは静的ですが、一部またはすべての軸には動的な次元があります。(非公式表記の例:
{1,2,?,4}
,{?,?,?}
)ランクは静的で、すべての軸におよび静的な次元があります。(非公式表記の例:
{1,2,3,4}
,{6}
,{}
)
パブリック関数
- PartialShape(std::initializer_list<Dimension> init)#
Dimension の初期化リストから静的ランクを持つ形状を構築します。
例:
PartialShape s{2,3,4}; // rank=3, all dimensions static PartialShape s{}; // rank=0 PartialShape s{2,Dimension::dynamic(),3}; // rank=3, dimension 1 dynamic
- パラメーター:
init – 構築された形状の Dimension 値。
- PartialShape(std::vector<Dimension> dimensions)#
Dimension のベクトルから静的ランクを持つ PartialShape を構築します。
- パラメーター:
dimensions – 構築された形状の Dimension 値。
- PartialShape(const std::vector<Dimension::value_type> &dimensions)#
次元値のベクトルから静的ランクを持つ PartialShape を構築します。
- パラメーター:
dimensions – 構築された形状の Dimension 値。
- PartialShape()#
ランクがゼロの静的 PartialShape (スカラーの形状) を構築します。
- PartialShape(const Shape &shape)#
PartialShape から静的な PartialShape を構築します。
- パラメーター:
shape – PartialShape に変換する PartialShape。
- PartialShape(const std::string &shape)#
string から静的な PartialShape を構築します。
- パラメーター:
shape – PartialShape に解析する文字列。
- bool is_static() const#
この形状が静的であるか確認します。
形状が静的ランクを持ち、形状のすべての次元が静的である場合、その形状は静的であると見なされます。
- 戻り値:
形状が静的である場合は
true
、そうでない場合はfalse
を返します。
- inline bool is_dynamic() const#
この形状が動的であるか確認します。
形状が静的ランクを持ち、形状のすべての次元が静的である場合、その形状は静的であると見なされます。
- 戻り値:
形状が静的である場合は
false
、そうでない場合はtrue
を返します。
- inline Rank rank() const#
形状のランクを取得します。
- 戻り値:
形状のランク。形状のランクが動的である場合、これは Rank::dynamic() になります。
- bool compatible(const PartialShape &s) const#
この形状が引数と互換性があるかどうか、つまりそれらをマージできるか確認します。
2 つの形状は、一方または両方に動的ランクがある場合、または両方の形状に動的ランクが等しく、次元が要素ごとに互換である場合に互換性があります (Dimension::compatible() を参照)。
- パラメーター:
s – この形状との互換性をチェックする形状。
- 戻り値:
この形状が
s
と互換性がある場合はtrue
、それ以外の場合はfalse
を返します。
- bool same_scheme(const PartialShape &s) const#
この形状が引数と同じスキームを表しているかどうかを確認します。
2 つの形状
s1
とs2
は、両方が動的ランクを持つか、両方が静的で等しいランクr
を持ち、0
からr-1
までのすべてのi
について、s1[i]
がs2[i]
と同じスキームである場合、同じスキームを表します (Dimension::same_scheme() を参照)。- パラメーター:
s – この形状とスキームが比較される形状。
- 戻り値:
この形状が
s
と同じスキームを表す場合はtrue
、それ以外はfalse
を返します。
- bool relaxes(const PartialShape &s) const#
この形状が緩和論証であるか確認します。
直感的には、PartialShape
s1
がs2
よりも許容的である場合、s2
を緩和する (またはs2
の緩和である) と言われます。言い換えれば、s2
の動的次元にプラグインすることで形成できるものは、s1
の動的次元にプラグインすることでも形成できる場合、s1
はs2
の緩和ですが、その逆は必ずしも当てはまりません。s1.relaxes(s2)
はs2.refines(s1)
と同等です。正式には、次の場合に PartialShape
s1
は PartialShapes2
を緩和すると言われます:0
からr-1
までのすべてのi
について、s1[i]
に s2[i] が含まれます。
- パラメーター:
s – この形状と比較される形状。
- 戻り値:
この形状が
s
を緩和する場合はtrue
、そうでない場合はfalse
を返します。
- bool refines(const PartialShape &s) const#
この形状が引数のリファインメントであるか確認します。
直感的には、PartialShape
s1
がs2
よりも許容度が低い場合、s2
を緩和する (またはs2
の緩和である) と言われます。言い換えれば、s2
の動的次元にプラグインすることで形成できるものは、s1
の動的次元にプラグインすることでも形成できる場合、s1
はs1
の緩和ですが、その逆は必ずしも当てはまりません。s1.refines(s2)
はs2.relaxes(s1)
と同等です。正式には、次の場合に PartialShape
s1
は PartialShapes2
をリファイン (改良) すると言われます:s2
は動的ランクを持ち、またはs1
とs2
は両方とも静的ランクr
を持ち、0
からr-1
までのすべてのi
について、s2[i]
s2[i] は動的であるか、s1[i]
==s2[i]
です。
- パラメーター:
s – この形状と比較される形状。
- 戻り値:
この形状が
s
をリファインする場合はtrue
、そうでない場合はfalse
を返します。
- bool merge_rank(const Rank &r)#
この形状のランクが
r
と互換性があるか確認し、形状のランクが動的でr
が静的である場合は、この形状を更新して、すべての次元が動的であるランクr
を持ちます。- 戻り値:
この形状のランクが
r
と互換性がある場合はtrue
、それ以外はfalse
。
- Shape to_shape() const#
静的な PartialShape を PartialShape に変換します。
- スロー:
std::invalid_argument – この PartialShape が動的である場合。
- 戻り値:
s[i] = size_t((*this)[i])
となる新しい PartialShapes
- bool all_non_negative() const#
テンソルのすべての静的次元が非負の場合は
true
を返し、それ以外はfalse
を返します。
- Dimension &operator[](std::ptrdiff_t i)#
境界チェック付きの PartialShape のインデックス・オペレーター。
- パラメーター:
i – 範囲 [-rank, rank) 内で選択されている次元のインデックス。
- 戻り値:
この形状の
i
番目の Dimension へのリファレンス。
- const Dimension &operator[](std::ptrdiff_t i) const#
境界チェック付きの PartialShape のインデックス・オペレーター。
- パラメーター:
i – 範囲 [-rank, rank) 内で選択されている次元のインデックス。
- 戻り値:
この形状の
i
番目の Dimension へのリファレンス。
- inline iterator begin() noexcept#
形状の最初の要素を指す読み取り/書き込みイテレーターを返します。反復は通常の要素順序で実行されます。
- inline const_iterator begin() const noexcept#
形状の最初の要素を指す読み取り専用 (定数) イテレーターを返します。反復は通常の要素順序で実行されます。
- inline iterator end() noexcept#
形状内の最後の要素の 1 つ後を指す読み取り/書き込みイテレーターを返します。反復は通常の要素順序で実行されます。
- inline const_iterator end() const noexcept#
形状内の最後の要素の 1 つ後を指す読み取り専用 (定数) イテレーターを返します。反復は通常の要素順序で実行されます。
- inline reverse_iterator rbegin() noexcept#
形状の最後の要素を指す読み取り/書き込みイテレーターを返します。反復は要素の逆順に実行されます。
- inline const_reverse_iterator rbegin() const noexcept#
形状の最後の要素を指す読み取り専用 (定数) イテレーターを返します。反復は要素の逆順に実行されます。
- inline reverse_iterator rend() noexcept#
形状の最初の要素の 1 つ前を指す読み取り/書き込み逆イテレーターを返します。反復は要素の逆順に実行されます。
- inline const_reverse_iterator rend() const noexcept#
形状の最初の要素の 1 つ前を指す読み取り専用 (定数) 逆イテレーターを返します。反復は要素の逆順に実行されます。
- inline const_iterator cbegin() const noexcept#
形状の最初の要素を指す読み取り専用 (定数) イテレーターを返します。反復は通常の要素順序で実行されます。
- inline const_iterator cend() const noexcept#
形状内の最後の要素の 1 つ後を指す読み取り専用 (定数) イテレーターを返します。反復は通常の要素順序で実行されます。
- inline const_reverse_iterator crbegin() const noexcept#
形状の最後の要素を指す読み取り専用 (定数) イテレーターを返します。反復は要素の逆順に実行されます。
- inline const_reverse_iterator crend() const noexcept#
形状の最初の要素の 1 つ前を指す読み取り専用 (定数) 逆イテレーターを返します。反復は要素の逆順に実行されます。
- inline void resize(size_t count)#
count 要素が含まれるように次元コンテナのサイズを変更します。
- inline size_t size() const#
次元ベクトルのサイズを返します。ランクは静的である必要があります。
- inline void insert(iterator position, size_t n, const Dimension &val)#
position の前に、count 個の値のコピーを挿入します。
- template<class InputIterator>
inline void insert(iterator position, InputIterator first, InputIterator last)# position の前に範囲 [first, last) の要素を挿入します。
- inline void reserve(size_t n)#
次元ベクトルの容量が n 個の要素を格納するのに十分であることを要求します。
- std::string to_string() const#
PartialShape の文字列表現。
パブリック静的関数
- static PartialShape dynamic(Rank r = Rank::dynamic())#
指定されたランクとすべての次元 (存在する場合) を動的に持つ PartialShape を構築します。
- 戻り値:
指定されたランクとすべての次元 (存在する場合) を動的に持つ PartialShape。
- static bool merge_into(PartialShape &dst, const PartialShape &src)#
ある形状を別の形状に結合してみます。
src
をdst
にマージし、成功した場合はtrue
を、失敗した場合はfalse
を返します。false
の場合、dst
への影響は未指定になります。2 つの部分形状
s1
とs2
をマージすることは、s
が存在する場合に、s1
またはs2
よりも許容度が低い、最も許容度の高い部分形状s
を見つけることです。次に例を示します:Merge(?,?) -> ? Merge(?,{?,?}) -> {?,?}merge({?,?},{?,?}) -> {?,?}merge({1,2,3,4},?) -> {1,2,3,4} merge({1,2},{1,?}) -> {1,2} merge({1,2,?,?},{1,?,3,?}) -> {1,2,3,?} merge({1,2,3},{1,2,3}) -> {1,2,3} merge({1,?},{2,?}) fails [dimension 0 constraints are inconsistent] merge({?,?},{?,?,?}) fails [ranks are inconsistent]
この関数 (merge_into) は、上記の “merge” 操作を
dst
とsrc
に対して実行しますが、その結果でdst
を上書きし、マージが成功した場合はtrue
を返します。マージが失敗した場合、関数はfalse
を返し、dst
に未指定の変更を加える可能性があります。- パラメーター:
dst – [inout]
src
がマージされる形状。src –
dst
にマージされる形状。
- 戻り値:
結合が成功した場合は
true
、それ以外の場合はfalse
を返します。
- static bool broadcast_merge_into(PartialShape &dst, const PartialShape &src, const ov::op::AutoBroadcastSpec &autob)#
暗黙的なブロードキャストとともに、ある形状を別の形状にマージしてみます。
フレンド
- friend OPENVINO_API std::ostream & operator<< (std::ostream &str, const PartialShape &shape)
PartialShape の可読性のある表現を出力ストリームに挿入します。
ストリームへの出力は “非公式” な表記法で行われます。次のようになります:
shape
に動的ランクがある場合は、文字列?
を挿入します。shape
が静的ランクを持つ場合、文字列{
を挿入し、shape
の各次元をコンマで区切って出力ストリームに挿入し、最後に}
を挿入します。
PartialShape s1{PartialShape::dynamic())}; PartialShape s2{}; PartialShape s3{1,Dimension::dynamic(),2,3}; PartialShape s4{2,3,4}; std::cout << s1 << std::endl << s2 << std::endl << s3 << std::endl << s4 << std::endl;
出力:
? {} {1,?,2,3} {2,3,4}
- パラメーター:
str – 挿入対象となる出力ストリーム。
shape –
str
に挿入される形状。
- 戻り値:
挿入後の
str
への参照。
- friend OPENVINO_API PartialShape operator+ (const PartialShape &s1, const PartialShape &s2)
2 つの PartialShape オブジェクトの要素ごとの追加。
s1
またはs2
が動的ランクを持つ場合は、PartialShape::dynamic() を返します。s1 と s2
の両方が静的ランクを持ち、それらのランクが等しくない場合は、std::invalid_argument をスローします。s1
とs2
の両方が静的ランクを持ち、それらのランクが等しい場合は、i
番目の次元がs1[i] + s2[i]
である新しい形状を返します。
- パラメーター:
s1 – 加算の左オペランド。
s2 – 加算の右オペランド。
- スロー
std::invalid_argument –
s1
とs2
のランクが一致しない場合。- 戻り値:
s1
をs2
に要素ごとに加算した結果 (説明を参照)。
- class PrePostProcessor#
- #include <pre_post_process.hpp>
既存の ov::Model に前処理および後処理の手順を追加するメインクラス。
これは、すべての前処理操作が 1 つの入力を受け取り、1 つの出力を生成することを前提とする、ov::Model オブジェクトに対して簡単な前処理および後処理操作を記述するヘルパークラスです。
複数の入力/出力を持つ複数の関数を 1 つに結合するような高度な前処理シナリオでは、クライアント・コードは ov::Model を介した変換パスを使用できます。
パブリック関数
デフォルト・コンストラクター。
- パラメーター:
function – ロードされたモデルを表す既存の関数
- PrePostProcessor(PrePostProcessor&&) noexcept#
デフォルト・ムーブ・コンストラクター。
- PrePostProcessor &operator=(PrePostProcessor&&) noexcept#
デフォルトムーブ代入オペレーター。
- ~PrePostProcessor()#
デフォルトのデストラクター。
- InputInfo &input()#
入力前処理データ構造を取得します。モデル/関数に入力が 1 つしかない場合にのみ使用します。返された構造を使用すると、アプリケーションのコードはユーザーのテンソルデータ (レイアウトなど)、前処理手順、ターゲットモデルのデータを設定できます。
- 戻り値:
モデルの入力情報構造への参照
- InputInfo &input(const std::string &tensor_name)#
テンソル名で識別される入力の入力前処理データ構造を取得します。
- パラメーター:
tensor_name – 特定の入力テンソル名。テンソル名がモデル内のどの入力にも関連付けられていない場合にスローされます
- 戻り値:
モデルの入力情報構造への参照
- InputInfo &input(size_t input_index)#
モデル内の順序によって識別される入力の入力前処理データ構造を取得します。
- パラメーター:
input_index – 特定の入力の入力インデックス。入力インデックスが関連する関数の範囲外である場合にスローされます
- 戻り値:
モデルの入力情報構造への参照
- OutputInfo &output()#
出力後処理データ構造を取得します。モデル/関数に出力が 1 つしかない場合にのみ使用します。返された構造を使用すると、アプリケーションのコードはモデルの出力データ、後処理手順、ユーザーのテンソルデータ (レイアウトなど) を設定できます。
- 戻り値:
モデルの出力情報構造への参照
- OutputInfo &output(const std::string &tensor_name)#
テンソル名で識別される出力の出力後処理データ構造を取得します。
- パラメーター:
tensor_name – 特定の出力のテンソル名。テンソル名がモデル内のどの入力にも関連付けられていない場合にスローされます
- 戻り値:
モデルの出力情報構造への参照
- OutputInfo &output(size_t output_index)#
モデル内の順序によって識別される出力の出力後処理データ構造を取得します。
- パラメーター:
output_index – 特定の出力の出力インデックス。出力インデックスが関連する関数の範囲外である場合にスローされます
- 戻り値:
モデルの出力情報構造への参照
- class Shape : public std::vector<size_t>#
- #include <shape.hpp>
テンソルの形状。
パブリック関数
- OPENVINO_API Shape::reference operator[] (std::ptrdiff_t i)
インデックスで次元を取得します。
- パラメーター:
i – 形状次元のインデックス [-rank, rank)。
- 戻り値:
この形状の i 番目の次元へのリファレンス。
- OPENVINO_API Shape::const_reference operator[] (std::ptrdiff_t i) const
インデックスで次元を取得します。
- パラメーター:
i – 形状次元のインデックス [-rank, rank)。
- 戻り値:
この形状の i 番目の次元への const 参照。
- OPENVINO_API Shape::reference at (std::ptrdiff_t i)
境界チェックを行い、インデックスで次元を取得します。
- パラメーター:
i – 形状次元のインデックス [-rank, rank)。
- 戻り値:
この形状の i 番目の次元へのリファレンス。
- OPENVINO_API Shape::const_reference at (std::ptrdiff_t i) const
境界チェックを行い、インデックスで次元を取得します。
- パラメーター:
i – 形状次元のインデックス [-rank, rank)。
- 戻り値:
この形状の i 番目の次元への const 参照。
- class Symbol#
- #include <symbol.hpp>
シンボリック形状推論の目的で一意のシンボルを表すクラス。シンボルの等価性は、互いに素なデータ構造によって追跡されます。
パブリック関数
- Symbol() = default#
デフォルトでは一意のシンボルが構築されます。
- Symbol() = default#
- struct DiscreteTypeInfo#
- #include <type.hpp>
継承のないタイプシステムのタイプ情報。インスタンスには、他のタイプとは関係のない 1 つのタイプだけが含まれます。
C++ RTTI を使用せずに static_cast/static_ptr_cast を介したタイプセーフな動的変換のための 3 つの関数 ov::is_type<Type>、ov::as_type<Type>、ov::as_type_ptr<Type> をサポートします。タイプには、静的な type_info メンバーと、その type_info メンバーへの参照を返す仮想 get_type_info() メンバーが必要です。
- template<typename ForwardIt>