:nosearch: .. _op_ai_onnx_Upsample-9: Upsample - version 9 ==================== This page documents version **9** of operator **Upsample**. See :doc:`Upsample` for the latest version (since version 10). - **Domain**: ``ai.onnx`` - **Since version**: 9 Upsample the input tensor. Each dimension value of the output tensor is: .. code-block:: text output_dimension = floor(input_dimension * scale). **Inputs** - **X** (*T*): N-D tensor - **scales** (*tensor(float)*): The scale array along each dimension. It takes value greater than or equal to 1. The number of elements of 'scales' should be the same as the rank of input 'X'. **Outputs** - **Y** (*T*): N-D tensor after resizing **Attributes** - **mode** (*string*): Two interpolation modes: nearest (default), and linear (including bilinear, trilinear, etc) **Type Constraints** - **T**: Constrain input 'X' and output 'Y' to all tensor types. Allowed types: tensor(bool), tensor(complex128), tensor(complex64), tensor(double), tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64), tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint64), tensor(uint8). Examples -------- **test_cc_upsample_linear** .. code-block:: text Node: Upsample(X, scales) -> (Y) Attributes: mode = "linear" .. code-block:: text Inputs: X: shape=(1, 1, 2, 2), dtype=float32 [[[[1., 2.], [3., 4.]]]] scales: shape=(4,), dtype=float32 [1., 1., 2., 2.] Outputs: Y: shape=(1, 1, 4, 4), dtype=float32 [[[[1. , 1.5, 2. , 2. ], [2. , 2.5, 3. , 3. ], [3. , 3.5, 4. , 4. ], [3. , 3.5, 4. , 4. ]]]] **test_cc_upsample_nearest** .. code-block:: text Node: Upsample(X, scales) -> (Y) Attributes: mode = "nearest" .. code-block:: text Inputs: X: shape=(1, 1, 2, 2), dtype=float32 [[[[1., 2.], [3., 4.]]]] scales: shape=(4,), dtype=float32 [1., 1., 2., 3.] Outputs: Y: shape=(1, 1, 4, 6), dtype=float32 [[[[1., 1., 1., 2., 2., 2.], [1., 1., 1., 2., 2., 2.], [3., 3., 3., 4., 4., 4.], [3., 3., 3., 4., 4., 4.]]]] **test_cc_upsample_nearest_1d** .. code-block:: text Node: Upsample(X, scales) -> (Y) Attributes: mode = "nearest" .. code-block:: text Inputs: X: shape=(3,), dtype=float32 [10., 20., 30.] scales: shape=(1,), dtype=float32 [2.] Outputs: Y: shape=(6,), dtype=float32 [10., 10., 20., 20., 30., 30.] **test_cc_upsample_nearest_default_mode** .. code-block:: text Node: Upsample(X, scales) -> (Y) .. code-block:: text Inputs: X: shape=(1, 1, 2, 2), dtype=float32 [[[[1., 2.], [3., 4.]]]] scales: shape=(4,), dtype=float32 [1., 1., 2., 2.] Outputs: Y: shape=(1, 1, 4, 4), dtype=float32 [[[[1., 1., 2., 2.], [1., 1., 2., 2.], [3., 3., 4., 4.], [3., 3., 4., 4.]]]] Differences with previous version (7) ------------------------------------- **SchemaDiff**: ``Upsample`` (domain ``'ai.onnx'``) * old version: 7 * new version: 9 * breaking: **yes** **Breaking reasons:** * input 'scales' (added): at position 1; option=Single; type_str='tensor(float)' * attribute 'scales' (removed): type=FLOATS; required=True **Inputs:** * [BREAKING] added 'scales': at position 1; option=Single; type_str='tensor(float)' **Attributes:** * [BREAKING] removed 'scales': type=FLOATS; required=True