[SPEC] Inverse operation (#22786)
### Details: - Add Inverse operation specification ### Tickets: - 131139
This commit is contained in:
parent
a0be9ca772
commit
f2ca6c95e5
|
|
@ -12,6 +12,7 @@ Available Operation Sets
|
|||
:maxdepth: 1
|
||||
:hidden:
|
||||
|
||||
openvino_docs_ops_opset14
|
||||
openvino_docs_ops_opset13
|
||||
openvino_docs_ops_opset12
|
||||
openvino_docs_ops_opset11
|
||||
|
|
@ -36,6 +37,8 @@ This topic provides a complete list of available sets of operations supported in
|
|||
|
||||
* - OpenVINO™ Version
|
||||
- Actual Operations Set
|
||||
* - 2024.0
|
||||
- :doc:`opset14 <openvino_docs_ops_opset14>`
|
||||
* - 2023.2
|
||||
- :doc:`opset13 <openvino_docs_ops_opset13>`
|
||||
* - 2023.1
|
||||
|
|
|
|||
|
|
@ -0,0 +1,208 @@
|
|||
.. {#openvino_docs_ops_opset14}
|
||||
|
||||
opset14
|
||||
=======
|
||||
|
||||
|
||||
.. meta::
|
||||
:description: Explore the examples of operation instances expressed as IR
|
||||
XML snippets in the opset14 operation set, supported in OpenVINO™
|
||||
toolkit.
|
||||
|
||||
This specification document describes the ``opset14`` operation set supported in OpenVINO™.
|
||||
Support for each particular operation from the list below depends on the capabilities of an inference plugin
|
||||
and may vary among different hardware platforms and devices. Examples of operation instances are provided as IR xml
|
||||
snippets. Such IR is generated by the Model Optimizer. The semantics match corresponding OpenVINO operation classes
|
||||
declared in ``namespace opset14``.
|
||||
|
||||
|
||||
Table of Contents
|
||||
##################
|
||||
|
||||
* :doc:`Abs <openvino_docs_ops_arithmetic_Abs_1>`
|
||||
* :doc:`Acos <openvino_docs_ops_arithmetic_Acos_1>`
|
||||
* :doc:`Acosh <openvino_docs_ops_arithmetic_Acosh_3>`
|
||||
* :doc:`AdaptiveAvgPool <openvino_docs_ops_pooling_AdaptiveAvgPool_8>`
|
||||
* :doc:`AdaptiveMaxPool <openvino_docs_ops_pooling_AdaptiveMaxPool_8>`
|
||||
* :doc:`Add <openvino_docs_ops_arithmetic_Add_1>`
|
||||
* :doc:`Asin <openvino_docs_ops_arithmetic_Asin_1>`
|
||||
* :doc:`Asinh <openvino_docs_ops_arithmetic_Asinh_3>`
|
||||
* :doc:`Assign <openvino_docs_ops_infrastructure_Assign_3>`
|
||||
* :doc:`Atan <openvino_docs_ops_arithmetic_Atan_1>`
|
||||
* :doc:`Atanh <openvino_docs_ops_arithmetic_Atanh_3>`
|
||||
* :doc:`AvgPool <openvino_docs_ops_pooling_AvgPool_1>`
|
||||
* :doc:`BatchNormInference <openvino_docs_ops_normalization_BatchNormInference_5>`
|
||||
* :doc:`BatchToSpace <openvino_docs_ops_movement_BatchToSpace_2>`
|
||||
* :doc:`BinaryConvolution <openvino_docs_ops_convolution_BinaryConvolution_1>`
|
||||
* :doc:`BitwiseAnd <openvino_docs_ops_bitwise_BitwiseAnd_13>`
|
||||
* :doc:`BitwiseOr <openvino_docs_ops_bitwise_BitwiseOr_13>`
|
||||
* :doc:`BitwiseXor <openvino_docs_ops_bitwise_BitwiseXor_13>`
|
||||
* :doc:`BitwiseNot <openvino_docs_ops_bitwise_BitwiseNot_13>`
|
||||
* :doc:`Broadcast <openvino_docs_ops_movement_Broadcast_3>`
|
||||
* :doc:`Bucketize <openvino_docs_ops_condition_Bucketize_3>`
|
||||
* :doc:`CTCGreedyDecoder <openvino_docs_ops_sequence_CTCGreedyDecoder_1>`
|
||||
* :doc:`CTCGreedyDecoderSeqLen <openvino_docs_ops_sequence_CTCGreedyDecoderSeqLen_6>`
|
||||
* :doc:`CTCLoss <openvino_docs_ops_sequence_CTCLoss_4>`
|
||||
* :doc:`Ceiling <openvino_docs_ops_arithmetic_Ceiling_1>`
|
||||
* :doc:`Clamp <openvino_docs_ops_activation_Clamp_1>`
|
||||
* :doc:`Concat <openvino_docs_ops_movement_Concat_1>`
|
||||
* :doc:`Constant <openvino_docs_ops_infrastructure_Constant_1>`
|
||||
* :doc:`Convert <openvino_docs_ops_type_Convert_1>`
|
||||
* :doc:`ConvertLike <openvino_docs_ops_type_ConvertLike_1>`
|
||||
* :doc:`Convolution <openvino_docs_ops_convolution_Convolution_1>`
|
||||
* :doc:`ConvolutionBackpropData <openvino_docs_ops_convolution_ConvolutionBackpropData_1>`
|
||||
* :doc:`Cos <openvino_docs_ops_arithmetic_Cos_1>`
|
||||
* :doc:`Cosh <openvino_docs_ops_arithmetic_Cosh_1>`
|
||||
* :doc:`CumSum <openvino_docs_ops_arithmetic_CumSum_3>`
|
||||
* :doc:`DeformableConvolution <openvino_docs_ops_convolution_DeformableConvolution_8>`
|
||||
* :doc:`DeformablePSROIPooling <openvino_docs_ops_detection_DeformablePSROIPooling_1>`
|
||||
* :doc:`DepthToSpace <openvino_docs_ops_movement_DepthToSpace_1>`
|
||||
* :doc:`DetectionOutput <openvino_docs_ops_detection_DetectionOutput_8>`
|
||||
* :doc:`DFT <openvino_docs_ops_signals_DFT_7>`
|
||||
* :doc:`Divide <openvino_docs_ops_arithmetic_Divide_1>`
|
||||
* :doc:`Einsum <openvino_docs_ops_matrix_Einsum_7>`
|
||||
* :doc:`Elu <openvino_docs_ops_activation_Elu_1>`
|
||||
* :doc:`EmbeddingBagOffsetsSum <openvino_docs_ops_sparse_EmbeddingBagOffsetsSum_3>`
|
||||
* :doc:`EmbeddingBagPackedSum <openvino_docs_ops_sparse_EmbeddingBagPackedSum_3>`
|
||||
* :doc:`EmbeddingSegmentsSum <openvino_docs_ops_sparse_EmbeddingSegmentsSum_3>`
|
||||
* :doc:`Equal <openvino_docs_ops_comparison_Equal_1>`
|
||||
* :doc:`Erf <openvino_docs_ops_arithmetic_Erf_1>`
|
||||
* :doc:`Exp <openvino_docs_ops_activation_Exp_1>`
|
||||
* :doc:`ExperimentalDetectronDetectionOutput_6 <openvino_docs_ops_detection_ExperimentalDetectronDetectionOutput_6>`
|
||||
* :doc:`ExperimentalDetectronGenerateProposalsSingleImage_6 <openvino_docs_ops_detection_ExperimentalDetectronGenerateProposalsSingleImage_6>`
|
||||
* :doc:`ExperimentalDetectronPriorGridGenerator_6 <openvino_docs_ops_detection_ExperimentalDetectronPriorGridGenerator_6>`
|
||||
* :doc:`ExperimentalDetectronROIFeatureExtractor_6 <openvino_docs_ops_detection_ExperimentalDetectronROIFeatureExtractor_6>`
|
||||
* :doc:`ExperimentalDetectronTopKROIs_6 <openvino_docs_ops_sort_ExperimentalDetectronTopKROIs_6>`
|
||||
* :doc:`ExtractImagePatches <openvino_docs_ops_movement_ExtractImagePatches_3>`
|
||||
* :doc:`Eye <openvino_docs_ops_generation_Eye_9>`
|
||||
* :doc:`FakeConvert <openvino_docs_ops_quantization_FakeConvert_13>`
|
||||
* :doc:`FakeQuantize <openvino_docs_ops_quantization_FakeQuantize_1>`
|
||||
* :doc:`Floor <openvino_docs_ops_arithmetic_Floor_1>`
|
||||
* :doc:`FloorMod <openvino_docs_ops_arithmetic_FloorMod_1>`
|
||||
* :doc:`Gather <openvino_docs_ops_movement_Gather_8>`
|
||||
* :doc:`GatherElements <openvino_docs_ops_movement_GatherElements_6>`
|
||||
* :doc:`GatherND <openvino_docs_ops_movement_GatherND_8>`
|
||||
* :doc:`GatherTree <openvino_docs_ops_movement_GatherTree_1>`
|
||||
* :doc:`Gelu <openvino_docs_ops_activation_GELU_7>`
|
||||
* :doc:`GenerateProposals <openvino_docs_ops_detection_GenerateProposals_9>`
|
||||
* :doc:`Greater <openvino_docs_ops_comparison_Greater_1>`
|
||||
* :doc:`GreaterEqual <openvino_docs_ops_comparison_GreaterEqual_1>`
|
||||
* :doc:`GridSample <openvino_docs_ops_image_GridSample_9>`
|
||||
* :doc:`GRN <openvino_docs_ops_normalization_GRN_1>`
|
||||
* :doc:`GroupConvolution <openvino_docs_ops_convolution_GroupConvolution_1>`
|
||||
* :doc:`GroupConvolutionBackpropData <openvino_docs_ops_convolution_GroupConvolutionBackpropData_1>`
|
||||
* :doc:`GroupNormalization <openvino_docs_ops_normalization_GroupNormalization_12>`
|
||||
* :doc:`GRUCell <openvino_docs_ops_sequence_GRUCell_3>`
|
||||
* :doc:`GRUSequence <openvino_docs_ops_sequence_GRUSequence_5>`
|
||||
* :doc:`HardSigmoid <openvino_docs_ops_activation_HardSigmoid_1>`
|
||||
* :doc:`HSigmoid <openvino_docs_ops_activation_HSigmoid_5>`
|
||||
* :doc:`HSwish <openvino_docs_ops_activation_HSwish_4>`
|
||||
* :doc:`IDFT <openvino_docs_ops_signals_IDFT_7>`
|
||||
* :doc:`I420toBGR <openvino_docs_ops_image_I420toBGR_8>`
|
||||
* :doc:`I420toRGB <openvino_docs_ops_image_I420toRGB_8>`
|
||||
* :doc:`If <openvino_docs_ops_infrastructure_If_8>`
|
||||
* :doc:`Interpolate <openvino_docs_ops_image_Interpolate_11>`
|
||||
* :doc:`Inverse <openvino_docs_ops_matrix_Inverse_14>`
|
||||
* :doc:`IRDFT <openvino_docs_ops_signals_IRDFT_9>`
|
||||
* :doc:`IsInf <openvino_docs_ops_comparison_IsInf_10>`
|
||||
* :doc:`IsNaN <openvino_docs_ops_comparison_IsNaN_10>`
|
||||
* :doc:`Less <openvino_docs_ops_comparison_Less_1>`
|
||||
* :doc:`LessEqual <openvino_docs_ops_comparison_LessEqual_1>`
|
||||
* :doc:`Log <openvino_docs_ops_arithmetic_Log_1>`
|
||||
* :doc:`LogicalAnd <openvino_docs_ops_logical_LogicalAnd_1>`
|
||||
* :doc:`LogicalNot <openvino_docs_ops_logical_LogicalNot_1>`
|
||||
* :doc:`LogicalOr <openvino_docs_ops_logical_LogicalOr_1>`
|
||||
* :doc:`LogicalXor <openvino_docs_ops_logical_LogicalXor_1>`
|
||||
* :doc:`LogSoftmax <openvino_docs_ops_activation_LogSoftmax_5>`
|
||||
* :doc:`Loop <openvino_docs_ops_infrastructure_Loop_5>`
|
||||
* :doc:`LRN <openvino_docs_ops_normalization_LRN_1>`
|
||||
* :doc:`LSTMCell <openvino_docs_ops_sequence_LSTMCell_1>`
|
||||
* :doc:`LSTMSequence <openvino_docs_ops_sequence_LSTMSequence_1>`
|
||||
* :doc:`MatMul <openvino_docs_ops_matrix_MatMul_1>`
|
||||
* :doc:`MatrixNMS <openvino_docs_ops_sort_MatrixNms_8>`
|
||||
* :doc:`MaxPool <openvino_docs_ops_pooling_MaxPool_8>`
|
||||
* :doc:`Maximum <openvino_docs_ops_arithmetic_Maximum_1>`
|
||||
* :doc:`Minimum <openvino_docs_ops_arithmetic_Minimum_1>`
|
||||
* :doc:`Mish <openvino_docs_ops_activation_Mish_4>`
|
||||
* :doc:`Mod <openvino_docs_ops_arithmetic_Mod_1>`
|
||||
* :doc:`MVN <openvino_docs_ops_normalization_MVN_6>`
|
||||
* :doc:`MulticlassNMS <openvino_docs_ops_sort_MulticlassNonMaxSuppression_9>`
|
||||
* :doc:`Multinomial <openvino_docs_ops_generation_Multinomial_13>`
|
||||
* :doc:`Multiply <openvino_docs_ops_arithmetic_Multiply_1>`
|
||||
* :doc:`Negative <openvino_docs_ops_arithmetic_Negative_1>`
|
||||
* :doc:`NMSRotated <openvino_docs_ops_sort_NMSRotated_13>`
|
||||
* :doc:`NonMaxSuppression <openvino_docs_ops_sort_NonMaxSuppression_9>`
|
||||
* :doc:`NonZero <openvino_docs_ops_condition_NonZero_3>`
|
||||
* :doc:`NormalizeL2 <openvino_docs_ops_normalization_NormalizeL2_1>`
|
||||
* :doc:`NotEqual <openvino_docs_ops_comparison_NotEqual_1>`
|
||||
* :doc:`NV12toBGR <openvino_docs_ops_image_NV12toBGR_8>`
|
||||
* :doc:`NV12toRGB <openvino_docs_ops_image_NV12toRGB_8>`
|
||||
* :doc:`OneHot <openvino_docs_ops_sequence_OneHot_1>`
|
||||
* :doc:`Pad <openvino_docs_ops_movement_Pad_12>`
|
||||
* :doc:`Parameter <openvino_docs_ops_infrastructure_Parameter_1>`
|
||||
* :doc:`Power <openvino_docs_ops_arithmetic_Power_1>`
|
||||
* :doc:`PReLU <openvino_docs_ops_activation_PReLU_1>`
|
||||
* :doc:`PriorBoxClustered <openvino_docs_ops_detection_PriorBoxClustered_1>`
|
||||
* :doc:`PriorBox <openvino_docs_ops_detection_PriorBox_8>`
|
||||
* :doc:`Proposal <openvino_docs_ops_detection_Proposal_4>`
|
||||
* :doc:`PSROIPooling <openvino_docs_ops_detection_PSROIPooling_1>`
|
||||
* :doc:`RandomUniform <openvino_docs_ops_generation_RandomUniform_8>`
|
||||
* :doc:`Range <openvino_docs_ops_generation_Range_4>`
|
||||
* :doc:`RDFT <openvino_docs_ops_signals_RDFT_9>`
|
||||
* :doc:`ReLU <openvino_docs_ops_activation_ReLU_1>`
|
||||
* :doc:`ReadValue <openvino_docs_ops_infrastructure_ReadValue_3>`
|
||||
* :doc:`ReduceL1 <openvino_docs_ops_reduction_ReduceL1_4>`
|
||||
* :doc:`ReduceL2 <openvino_docs_ops_reduction_ReduceL2_4>`
|
||||
* :doc:`ReduceLogicalAnd <openvino_docs_ops_reduction_ReduceLogicalAnd_1>`
|
||||
* :doc:`ReduceLogicalOr <openvino_docs_ops_reduction_ReduceLogicalOr_1>`
|
||||
* :doc:`ReduceMax <openvino_docs_ops_reduction_ReduceMax_1>`
|
||||
* :doc:`ReduceMean <openvino_docs_ops_reduction_ReduceMean_1>`
|
||||
* :doc:`ReduceMin <openvino_docs_ops_reduction_ReduceMin_1>`
|
||||
* :doc:`ReduceProd <openvino_docs_ops_reduction_ReduceProd_1>`
|
||||
* :doc:`ReduceSum <openvino_docs_ops_reduction_ReduceSum_1>`
|
||||
* :doc:`RegionYolo <openvino_docs_ops_detection_RegionYolo_1>`
|
||||
* :doc:`ReorgYolo <openvino_docs_ops_detection_ReorgYolo_1>`
|
||||
* :doc:`Reshape <openvino_docs_ops_shape_Reshape_1>`
|
||||
* :doc:`Result <openvino_docs_ops_infrastructure_Result_1>`
|
||||
* :doc:`ReverseSequence <openvino_docs_ops_movement_ReverseSequence_1>`
|
||||
* :doc:`RNNCell <openvino_docs_ops_sequence_RNNCell_3>`
|
||||
* :doc:`RNNSequence <openvino_docs_ops_sequence_RNNSequence_5>`
|
||||
* :doc:`ROIAlign <openvino_docs_ops_detection_ROIAlign_9>`
|
||||
* :doc:`ROIPooling <openvino_docs_ops_detection_ROIPooling_1>`
|
||||
* :doc:`Roll <openvino_docs_ops_movement_Roll_7>`
|
||||
* :doc:`Round <openvino_docs_ops_arithmetic_Round_5>`
|
||||
* :doc:`ScaledDotProductAttention <openvino_docs_ops_sequence_ScaledDotProductAttention_13>`
|
||||
* :doc:`ScatterElementsUpdate <openvino_docs_ops_movement_ScatterElementsUpdate_12>`
|
||||
* :doc:`ScatterNDUpdate <openvino_docs_ops_movement_ScatterNDUpdate_3>`
|
||||
* :doc:`ScatterUpdate <openvino_docs_ops_movement_ScatterUpdate_3>`
|
||||
* :doc:`Select <openvino_docs_ops_condition_Select_1>`
|
||||
* :doc:`Selu <openvino_docs_ops_activation_Selu_1>`
|
||||
* :doc:`ShapeOf <openvino_docs_ops_shape_ShapeOf_3>`
|
||||
* :doc:`ShuffleChannels <openvino_docs_ops_movement_ShuffleChannels_1>`
|
||||
* :doc:`Sigmoid <openvino_docs_ops_activation_Sigmoid_1>`
|
||||
* :doc:`Sign <openvino_docs_ops_arithmetic_Sign_1>`
|
||||
* :doc:`Sin <openvino_docs_ops_arithmetic_Sin_1>`
|
||||
* :doc:`Sinh <openvino_docs_ops_arithmetic_Sinh_1>`
|
||||
* :doc:`Slice <openvino_docs_ops_movement_Slice_8>`
|
||||
* :doc:`SoftMax <openvino_docs_ops_activation_SoftMax_8>`
|
||||
* :doc:`SoftPlus <openvino_docs_ops_activation_SoftPlus_4>`
|
||||
* :doc:`SoftSign <openvino_docs_ops_activation_SoftSign_9>`
|
||||
* :doc:`SpaceToBatch <openvino_docs_ops_movement_SpaceToBatch_2>`
|
||||
* :doc:`SpaceToDepth <openvino_docs_ops_movement_SpaceToDepth_1>`
|
||||
* :doc:`Split <openvino_docs_ops_movement_Split_1>`
|
||||
* :doc:`Sqrt <openvino_docs_ops_arithmetic_Sqrt_1>`
|
||||
* :doc:`SquaredDifference <openvino_docs_ops_arithmetic_SquaredDifference_1>`
|
||||
* :doc:`Squeeze <openvino_docs_ops_shape_Squeeze_1>`
|
||||
* :doc:`StridedSlice <openvino_docs_ops_movement_StridedSlice_1>`
|
||||
* :doc:`Subtract <openvino_docs_ops_arithmetic_Subtract_1>`
|
||||
* :doc:`Swish <openvino_docs_ops_activation_Swish_4>`
|
||||
* :doc:`Tan <openvino_docs_ops_arithmetic_Tan_1>`
|
||||
* :doc:`Tanh <openvino_docs_ops_arithmetic_Tanh_1>`
|
||||
* :doc:`TensorIterator <openvino_docs_ops_infrastructure_TensorIterator_1>`
|
||||
* :doc:`Tile <openvino_docs_ops_movement_Tile_1>`
|
||||
* :doc:`TopK <openvino_docs_ops_sort_TopK_11>`
|
||||
* :doc:`Transpose <openvino_docs_ops_movement_Transpose_1>`
|
||||
* :doc:`Unique <openvino_docs_ops_movement_Unique_10>`
|
||||
* :doc:`Unsqueeze <openvino_docs_ops_shape_Unsqueeze_1>`
|
||||
* :doc:`VariadicSplit <openvino_docs_ops_movement_VariadicSplit_1>`
|
||||
|
||||
|
|
@ -105,6 +105,7 @@ Operation Specifications
|
|||
Interpolate-1 <openvino_docs_ops_image_Interpolate_1>
|
||||
Interpolate-4 <openvino_docs_ops_image_Interpolate_4>
|
||||
Interpolate-11 <openvino_docs_ops_image_Interpolate_11>
|
||||
Inverse-14 <openvino_docs_ops_matrix_Inverse_14>
|
||||
IsFinite-10 <openvino_docs_ops_comparison_IsFinite_10>
|
||||
IsInf-10 <openvino_docs_ops_comparison_IsInf_10>
|
||||
IsNaN-10 <openvino_docs_ops_comparison_IsNaN_10>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,135 @@
|
|||
.. {#openvino_docs_ops_matrix_Inverse_14}
|
||||
|
||||
Inverse
|
||||
=======
|
||||
|
||||
|
||||
.. meta::
|
||||
:description: Learn about Inverse-14 - a matrix operation that computes the inverse or adjoint for one matrix or a batch of input matrice.
|
||||
|
||||
**Versioned name**: *Inverse-14*
|
||||
|
||||
**Category**: *Matrix*
|
||||
|
||||
**Short description**: *Inverse* operation computes either the inverse or adjoint (conjugate transposes) of one or a batch of square invertible matrices.
|
||||
|
||||
**Detailed description**: *Inverse* operation computes the inverse of a square matrix. The operation uses LU decomposition with partial pivoting to compute the inverses. (`LU decomposotion with partial pivoting algorithm <https://arxiv.org/abs/2304.03068>`__)
|
||||
|
||||
The inverse matrix A^(-1) of a square matrix A is defined as:
|
||||
|
||||
.. math::
|
||||
|
||||
A \cdot A^{-1} = A^{-1} \cdot A = I
|
||||
|
||||
where **I** is the n-dimensional identity matrix.
|
||||
|
||||
The inverse matrix exists if and only if the input matrix is invertible. In that case, the inverse is unique. If the matrix is not invertible however, the operation may raise an exception or return an undefined result.
|
||||
|
||||
This operation can be used to compute the adjugate matrix instead of the inverse.
|
||||
|
||||
The adjugate matrix adj(A) of a square matrix A is defined as:
|
||||
|
||||
.. math::
|
||||
|
||||
adj(A) = det(A) \cdot A^{-1}
|
||||
|
||||
where **A^{-1}** is the matrix inverse of A, and **det(A)** is the determinant of A.
|
||||
|
||||
The adjugate matrix exists if and only if the inverse matrix exists.
|
||||
|
||||
**Attribute**:
|
||||
|
||||
* *adjoint*
|
||||
|
||||
* **Description**: Modifies the return value of the operation. If true, the operation returns the adjoint (conjugate transpose) of the input matrices instead of finding the inverse.
|
||||
* **Range of values**: `true`, `false`
|
||||
|
||||
* ``true`` - output adjugate matrix.
|
||||
* ``false`` - output inverse matrix.
|
||||
|
||||
* **Type**: `bool`
|
||||
* **Default value**: `false`
|
||||
* **Required**: *No*
|
||||
|
||||
**Input**:
|
||||
|
||||
* **1**: `input` - A tensor of shape [B1, B2, ..., Bn, ROW, COL] and type `T` representing the input square matrices. **The inner-most 2 dimensions form square matrices and must be of the same size.** B1, B2, ..., Bn represent any amount of batch dimensions (can be 0 for a single matrix input). **Required.**
|
||||
|
||||
**Output**:
|
||||
|
||||
* **1**: `output` - A tensor with the same type `T` as the input and same shape [B1, B2, ..., Bn, ROW, COL] as the input, representing the inverse matrices (or adjugate matrices) of the input matrices.
|
||||
|
||||
**Types**
|
||||
|
||||
* **T**: any supported floating-point type.
|
||||
|
||||
*Example 1: 2D input matrix.*
|
||||
|
||||
.. code-block:: xml
|
||||
:force:
|
||||
|
||||
<layer ... name="Inverse" type="Inverse">
|
||||
<data/>
|
||||
<input>
|
||||
<port id="0" precision="FP32">
|
||||
<dim>3</dim> <!-- 3 rows of square matrix -->
|
||||
<dim>3</dim> <!-- 3 columns of square matrix -->
|
||||
</port>
|
||||
</input>
|
||||
<output>
|
||||
<port id="1" precision="FP32" names="Inverse:0">
|
||||
<dim>3</dim> <!-- 3 rows of square matrix -->
|
||||
<dim>3</dim> <!-- 3 columns of square matrix -->
|
||||
</port>
|
||||
</output>
|
||||
</layer>
|
||||
|
||||
*Example 2: 3D input tensor with one batch dimension and adjoint=true.*
|
||||
|
||||
.. code-block:: xml
|
||||
:force:
|
||||
|
||||
<layer ... name="Inverse" type="Inverse">
|
||||
<data adjoint="true"/>
|
||||
<input>
|
||||
<port id="0" precision="FP32">
|
||||
<dim>2</dim> <!-- batch size of 2 -->
|
||||
<dim>4</dim> <!-- 4 rows of square matrix -->
|
||||
<dim>4</dim> <!-- 4 columns of square matrix -->
|
||||
</port>
|
||||
</input>
|
||||
<output>
|
||||
<port id="1" precision="FP32" names="Inverse:0">
|
||||
<dim>2</dim> <!-- batch size of 2 -->
|
||||
<dim>4</dim> <!-- 4 rows of square matrix -->
|
||||
<dim>4</dim> <!-- 4 columns of square matrix -->
|
||||
</port>
|
||||
</output>
|
||||
</layer>
|
||||
|
||||
*Example 3: 5D input tensor with three batch dimensions.*
|
||||
|
||||
.. code-block:: xml
|
||||
:force:
|
||||
|
||||
<layer ... name="Inverse" type="Inverse">
|
||||
<data/>
|
||||
<input>
|
||||
<port id="0" precision="FP32">
|
||||
<dim>5</dim> <!-- batch size of 5 -->
|
||||
<dim>4</dim> <!-- batch size of 4 -->
|
||||
<dim>3</dim> <!-- batch size of 3 -->
|
||||
<dim>2</dim> <!-- 2 rows of square matrix -->
|
||||
<dim>2</dim> <!-- 2 columns of square matrix -->
|
||||
</port>
|
||||
</input>
|
||||
<output>
|
||||
<port id="1" precision="FP32" names="Inverse:0">
|
||||
<dim>5</dim> <!-- batch size of 5 -->
|
||||
<dim>4</dim> <!-- batch size of 4 -->
|
||||
<dim>3</dim> <!-- batch size of 3 -->
|
||||
<dim>2</dim> <!-- 2 rows of square matrix -->
|
||||
<dim>2</dim> <!-- 2 columns of square matrix -->
|
||||
</port>
|
||||
</output>
|
||||
</layer>
|
||||
Loading…
Reference in New Issue