.. _l-onnx-doc-Clip: ==== Clip ==== .. contents:: :local: .. _l-onnx-op-clip-13: Clip - 13 ========= **Version** * **name**: `Clip (GitHub) `_ * **domain**: **main** * **since_version**: **13** * **function**: False * **support_level**: SupportType.COMMON * **shape inference**: True This version of the operator has been available **since version 13**. **Summary** Clip operator limits the given input within an interval. The interval is specified by the inputs 'min' and 'max'. They default to numeric_limits::lowest() and numeric_limits::max(), respectively. **Inputs** Between 1 and 3 inputs. * **input** (heterogeneous) - **T**: Input tensor whose elements to be clipped * **min** (optional, heterogeneous) - **T**: Minimum value, under which element is replaced by min. It must be a scalar(tensor of empty shape). * **max** (optional, heterogeneous) - **T**: Maximum value, above which element is replaced by max. It must be a scalar(tensor of empty shape). **Outputs** * **output** (heterogeneous) - **T**: Output tensor with clipped input elements **Type Constraints** * **T** in ( tensor(bfloat16), tensor(double), tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64), tensor(int8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(uint8) ): Constrain input and output types to all numeric tensors. **Examples** **default** :: node = onnx.helper.make_node( "Clip", inputs=["x", "min", "max"], outputs=["y"], ) x = np.array([-2, 0, 2]).astype(np.float32) min_val = np.float32(-1) max_val = np.float32(1) y = np.clip(x, min_val, max_val) # expected output [-1., 0., 1.] expect( node, inputs=[x, min_val, max_val], outputs=[y], name="test_clip_example" ) x = np.random.randn(3, 4, 5).astype(np.float32) y = np.clip(x, min_val, max_val) expect(node, inputs=[x, min_val, max_val], outputs=[y], name="test_clip") node = onnx.helper.make_node( "Clip", inputs=["x", "min", "max"], outputs=["y"], ) min_val = np.float32(-5) max_val = np.float32(5) x = np.array([-1, 0, 1]).astype(np.float32) y = np.array([-1, 0, 1]).astype(np.float32) expect( node, inputs=[x, min_val, max_val], outputs=[y], name="test_clip_inbounds" ) x = np.array([-6, 0, 6]).astype(np.float32) y = np.array([-5, 0, 5]).astype(np.float32) expect( node, inputs=[x, min_val, max_val], outputs=[y], name="test_clip_outbounds" ) x = np.array([-1, 0, 6]).astype(np.float32) y = np.array([-1, 0, 5]).astype(np.float32) expect( node, inputs=[x, min_val, max_val], outputs=[y], name="test_clip_splitbounds", ) **_clip_default** :: node = onnx.helper.make_node( "Clip", inputs=["x", "min"], outputs=["y"], ) min_val = np.float32(0) x = np.random.randn(3, 4, 5).astype(np.float32) y = np.clip(x, min_val, np.inf) expect(node, inputs=[x, min_val], outputs=[y], name="test_clip_default_min") no_min = "" # optional input, not supplied node = onnx.helper.make_node( "Clip", inputs=["x", no_min, "max"], outputs=["y"], ) max_val = np.float32(0) x = np.random.randn(3, 4, 5).astype(np.float32) y = np.clip(x, -np.inf, max_val) expect(node, inputs=[x, max_val], outputs=[y], name="test_clip_default_max") no_max = "" # optional input, not supplied node = onnx.helper.make_node( "Clip", inputs=["x", no_min, no_max], outputs=["y"], ) x = np.array([-1, 0, 1]).astype(np.float32) y = np.array([-1, 0, 1]).astype(np.float32) expect(node, inputs=[x], outputs=[y], name="test_clip_default_inbounds") **_clip_default_int8** :: node = onnx.helper.make_node( "Clip", inputs=["x", "min"], outputs=["y"], ) min_val = np.int8(0) x = np.random.randn(3, 4, 5).astype(np.int8) y = np.clip(x, min_val, np.iinfo(np.int8).max) expect( node, inputs=[x, min_val], outputs=[y], name="test_clip_default_int8_min" ) no_min = "" # optional input, not supplied node = onnx.helper.make_node( "Clip", inputs=["x", no_min, "max"], outputs=["y"], ) max_val = np.int8(0) x = np.random.randn(3, 4, 5).astype(np.int8) y = np.clip(x, np.iinfo(np.int8).min, max_val) expect( node, inputs=[x, max_val], outputs=[y], name="test_clip_default_int8_max" ) no_max = "" # optional input, not supplied node = onnx.helper.make_node( "Clip", inputs=["x", no_min, no_max], outputs=["y"], ) x = np.array([-1, 0, 1]).astype(np.int8) y = np.array([-1, 0, 1]).astype(np.int8) expect(node, inputs=[x], outputs=[y], name="test_clip_default_int8_inbounds") **Differences** .. raw:: html
00Clip operator limits the given input within an interval. The interval isClip operator limits the given input within an interval. The interval is
11specified by the inputs 'min' and 'max'. They default tospecified by the inputs 'min' and 'max'. They default to
22numeric_limits::lowest() and numeric_limits::max(), respectively.numeric_limits::lowest() and numeric_limits::max(), respectively.
33
44**Inputs****Inputs**
55
66Between 1 and 3 inputs.Between 1 and 3 inputs.
77
88* **input** (heterogeneous) - **T**:* **input** (heterogeneous) - **T**:
99 Input tensor whose elements to be clipped Input tensor whose elements to be clipped
1010* **min** (optional, heterogeneous) - **T**:* **min** (optional, heterogeneous) - **T**:
1111 Minimum value, under which element is replaced by min. It must be a Minimum value, under which element is replaced by min. It must be a
1212 scalar(tensor of empty shape). scalar(tensor of empty shape).
1313* **max** (optional, heterogeneous) - **T**:* **max** (optional, heterogeneous) - **T**:
1414 Maximum value, above which element is replaced by max. It must be a Maximum value, above which element is replaced by max. It must be a
1515 scalar(tensor of empty shape). scalar(tensor of empty shape).
1616
1717**Outputs****Outputs**
1818
1919* **output** (heterogeneous) - **T**:* **output** (heterogeneous) - **T**:
2020 Output tensor with clipped input elements Output tensor with clipped input elements
2121
2222**Type Constraints****Type Constraints**
2323
2424* **T** in (* **T** in (
25 tensor(bfloat16),
2526 tensor(double), tensor(double),
2627 tensor(float), tensor(float),
2728 tensor(float16), tensor(float16),
2829 tensor(int16), tensor(int16),
2930 tensor(int32), tensor(int32),
3031 tensor(int64), tensor(int64),
3132 tensor(int8), tensor(int8),
3233 tensor(uint16), tensor(uint16),
3334 tensor(uint32), tensor(uint32),
3435 tensor(uint64), tensor(uint64),
3536 tensor(uint8) tensor(uint8)
3637 ): ):
3738 Constrain input and output types to all numeric tensors. Constrain input and output types to all numeric tensors.
.. _l-onnx-op-clip-12: Clip - 12 ========= **Version** * **name**: `Clip (GitHub) `_ * **domain**: **main** * **since_version**: **12** * **function**: False * **support_level**: SupportType.COMMON * **shape inference**: True This version of the operator has been available **since version 12**. **Summary** Clip operator limits the given input within an interval. The interval is specified by the inputs 'min' and 'max'. They default to numeric_limits::lowest() and numeric_limits::max(), respectively. **Inputs** Between 1 and 3 inputs. * **input** (heterogeneous) - **T**: Input tensor whose elements to be clipped * **min** (optional, heterogeneous) - **T**: Minimum value, under which element is replaced by min. It must be a scalar(tensor of empty shape). * **max** (optional, heterogeneous) - **T**: Maximum value, above which element is replaced by max. It must be a scalar(tensor of empty shape). **Outputs** * **output** (heterogeneous) - **T**: Output tensor with clipped input elements **Type Constraints** * **T** in ( tensor(double), tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64), tensor(int8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(uint8) ): Constrain input and output types to all numeric tensors. **Differences** .. raw:: html
00Clip operator limits the given input within an interval. The interval isClip operator limits the given input within an interval. The interval is
11specified by the inputs 'min' and 'max'. They default tospecified by the inputs 'min' and 'max'. They default to
22numeric_limits::lowest() and numeric_limits::max(), respectively.numeric_limits::lowest() and numeric_limits::max(), respectively.
33
44**Inputs****Inputs**
55
66Between 1 and 3 inputs.Between 1 and 3 inputs.
77
88* **input** (heterogeneous) - **T**:* **input** (heterogeneous) - **T**:
99 Input tensor whose elements to be clipped Input tensor whose elements to be clipped
1010* **min** (optional, heterogeneous) - **T**:* **min** (optional, heterogeneous) - **T**:
1111 Minimum value, under which element is replaced by min. It must be a Minimum value, under which element is replaced by min. It must be a
1212 scalar(tensor of empty shape). scalar(tensor of empty shape).
1313* **max** (optional, heterogeneous) - **T**:* **max** (optional, heterogeneous) - **T**:
1414 Maximum value, above which element is replaced by max. It must be a Maximum value, above which element is replaced by max. It must be a
1515 scalar(tensor of empty shape). scalar(tensor of empty shape).
1616
1717**Outputs****Outputs**
1818
1919* **output** (heterogeneous) - **T**:* **output** (heterogeneous) - **T**:
2020 Output tensor with clipped input elements Output tensor with clipped input elements
2121
2222**Type Constraints****Type Constraints**
2323
2424* **T** in (* **T** in (
2525 tensor(double), tensor(double),
2626 tensor(float), tensor(float),
2727 tensor(float16) tensor(float16),
28 tensor(int16),
29 tensor(int32),
30 tensor(int64),
31 tensor(int8),
32 tensor(uint16),
33 tensor(uint32),
34 tensor(uint64),
35 tensor(uint8)
2836 ): ):
2937 Constrain input and output types to float tensors. Constrain input and output types to all numeric tensors.
.. _l-onnx-op-clip-11: Clip - 11 ========= **Version** * **name**: `Clip (GitHub) `_ * **domain**: **main** * **since_version**: **11** * **function**: False * **support_level**: SupportType.COMMON * **shape inference**: True This version of the operator has been available **since version 11**. **Summary** Clip operator limits the given input within an interval. The interval is specified by the inputs 'min' and 'max'. They default to numeric_limits::lowest() and numeric_limits::max(), respectively. **Inputs** Between 1 and 3 inputs. * **input** (heterogeneous) - **T**: Input tensor whose elements to be clipped * **min** (optional, heterogeneous) - **T**: Minimum value, under which element is replaced by min. It must be a scalar(tensor of empty shape). * **max** (optional, heterogeneous) - **T**: Maximum value, above which element is replaced by max. It must be a scalar(tensor of empty shape). **Outputs** * **output** (heterogeneous) - **T**: Output tensor with clipped input elements **Type Constraints** * **T** in ( tensor(double), tensor(float), tensor(float16) ): Constrain input and output types to float tensors. **Differences** .. raw:: html
00Clip operator limits the given input within an interval. The interval isClip operator limits the given input within an interval. The interval is
11specified with arguments 'min' and 'max'. They default tospecified by the inputs 'min' and 'max'. They default to
22numeric_limits::lowest() and numeric_limits::max() respectively.numeric_limits::lowest() and numeric_limits::max(), respectively.
33
4**Inputs**
5
6Between 1 and 3 inputs.
7
48**Attributes*** **input** (heterogeneous) - **T**:
5
69* **max**: Input tensor whose elements to be clipped
710 Maximum value, above which element is replaced by max Default value is 3.4028234663852886e+38.* **min** (optional, heterogeneous) - **T**:
8* **min**:
911 Minimum value, under which element is replaced by min Default value is -3.4028234663852886e+38. Minimum value, under which element is replaced by min. It must be a
10
1112**Inputs** scalar(tensor of empty shape).
12
1313* **input** (heterogeneous) - **T**:* **max** (optional, heterogeneous) - **T**:
14 Input tensor whose elements to be clipped
14 Maximum value, above which element is replaced by max. It must be a
15 scalar(tensor of empty shape).
1516
1617**Outputs****Outputs**
1718
1819* **output** (heterogeneous) - **T**:* **output** (heterogeneous) - **T**:
1920 Output tensor with clipped input elements Output tensor with clipped input elements
2021
2122**Type Constraints****Type Constraints**
2223
2324* **T** in (* **T** in (
2425 tensor(double), tensor(double),
2526 tensor(float), tensor(float),
2627 tensor(float16) tensor(float16)
2728 ): ):
2829 Constrain input and output types to float tensors. Constrain input and output types to float tensors.
.. _l-onnx-op-clip-6: Clip - 6 ======== **Version** * **name**: `Clip (GitHub) `_ * **domain**: **main** * **since_version**: **6** * **function**: False * **support_level**: SupportType.COMMON * **shape inference**: True This version of the operator has been available **since version 6**. **Summary** Clip operator limits the given input within an interval. The interval is specified with arguments 'min' and 'max'. They default to numeric_limits::lowest() and numeric_limits::max() respectively. **Attributes** * **max**: Maximum value, above which element is replaced by max Default value is ``3.4028234663852886e+38``. * **min**: Minimum value, under which element is replaced by min Default value is ``-3.4028234663852886e+38``. **Inputs** * **input** (heterogeneous) - **T**: Input tensor whose elements to be clipped **Outputs** * **output** (heterogeneous) - **T**: Output tensor with clipped input elements **Type Constraints** * **T** in ( tensor(double), tensor(float), tensor(float16) ): Constrain input and output types to float tensors. **Differences** .. raw:: html
00Clip operator limits the given input within an interval. The interval isClip operator limits the given input within an interval. The interval is
11specified with arguments 'min' and 'max'. They default tospecified with arguments 'min' and 'max'. They default to
22numeric_limits::lowest() and numeric_limits::max() respectively.numeric_limits::lowest() and numeric_limits::max() respectively.
33
44**Attributes****Attributes**
55
6* **consumed_inputs**:
7 legacy optimization attribute.
86* **max**:* **max**:
97 Maximum value, above which element is replaced by max Maximum value, above which element is replaced by max Default value is 3.4028234663852886e+38.
108* **min**:* **min**:
119 Minimum value, under which element is replaced by min Minimum value, under which element is replaced by min Default value is -3.4028234663852886e+38.
1210
1311**Inputs****Inputs**
1412
1513* **input** (heterogeneous) - **T**:* **input** (heterogeneous) - **T**:
1614 Input tensor whose elements to be clipped Input tensor whose elements to be clipped
1715
1816**Outputs****Outputs**
1917
2018* **output** (heterogeneous) - **T**:* **output** (heterogeneous) - **T**:
2119 Output tensor with clipped input elements Output tensor with clipped input elements
2220
2321**Type Constraints****Type Constraints**
2422
2523* **T** in (* **T** in (
2624 tensor(double), tensor(double),
2725 tensor(float), tensor(float),
2826 tensor(float16) tensor(float16)
2927 ): ):
3028 Constrain input and output types to float tensors. Constrain input and output types to float tensors.
.. _l-onnx-op-clip-1: Clip - 1 ======== **Version** * **name**: `Clip (GitHub) `_ * **domain**: **main** * **since_version**: **1** * **function**: False * **support_level**: SupportType.COMMON * **shape inference**: False This version of the operator has been available **since version 1**. **Summary** Clip operator limits the given input within an interval. The interval is specified with arguments 'min' and 'max'. They default to numeric_limits::lowest() and numeric_limits::max() respectively. **Attributes** * **consumed_inputs**: legacy optimization attribute. * **max**: Maximum value, above which element is replaced by max * **min**: Minimum value, under which element is replaced by min **Inputs** * **input** (heterogeneous) - **T**: Input tensor whose elements to be clipped **Outputs** * **output** (heterogeneous) - **T**: Output tensor with clipped input elements **Type Constraints** * **T** in ( tensor(double), tensor(float), tensor(float16) ): Constrain input and output types to float tensors.