:nosearch: .. _op_ai_onnx_Unsqueeze-23: Unsqueeze - version 23 ====================== This page documents version **23** of operator **Unsqueeze**. See :doc:`Unsqueeze` for the latest version (since version 25). - **Domain**: ``ai.onnx`` - **Since version**: 23 Insert single-dimensional entries to the shape of an input tensor (``data``). Takes one required input ``axes`` - which contains a list of dimension indices and this operator will insert a dimension of value ``1`` into the corresponding index of the output tensor (``expanded``). For example: .. code-block:: text Given an input tensor (`data`) of shape [3, 4, 5], then Unsqueeze(data, axes=[0, 4]) outputs a tensor (`expanded`) containing the same data as `data` but with shape [1, 3, 4, 5, 1]. The ``axes`` should not contain any duplicate entries. It is an error if it contains duplicates. The rank of the output tensor (``output_rank``) is the rank of the input tensor (``data``) plus the number of values in ``axes``. Each value in ``axes`` should be within the (inclusive) range [-output_rank , output_rank - 1]. The order of values in ``axes`` does not matter and can come in any order. **Inputs** - **data** (*T*): Original tensor - **axes** (*tensor(int64)*): 1D tensor of integers indicating the dimensions to be inserted. Negative value means counting dimensions from the back. Accepted range is [-r, r-1] where r = rank(expanded). **Outputs** - **expanded** (*T*): Reshaped tensor with same data as input. **Type Constraints** - **T**: Constrain input and output types to all tensor types up to IRv11. Allowed types: tensor(bfloat16), tensor(bool), tensor(complex128), tensor(complex64), tensor(double), tensor(float), tensor(float16), tensor(float4e2m1), tensor(float8e4m3fn), tensor(float8e4m3fnuz), tensor(float8e5m2), tensor(float8e5m2fnuz), tensor(int16), tensor(int32), tensor(int4), tensor(int64), tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint4), tensor(uint64), tensor(uint8). Examples -------- **test_cc_shape_inference_tiny_llm** .. code-block:: text Node: Unsqueeze(mask_float, mask_axes) -> (mask_4d) **test_cc_shape_inference_tiny_llm_inlined** .. code-block:: text Node: Unsqueeze(mask_float, mask_axes) -> (mask_4d) Differences with previous version (21) -------------------------------------- **SchemaDiff**: ``Unsqueeze`` (domain ``'ai.onnx'``) * old version: 21 * new version: 23 * breaking: no **Type constraints:** * changed 'T': added types: ['tensor(float4e2m1)']