// This file is an example of an operator test file. // // In this file, we demonstrate how to write a test file for ONNX operators. // There are 2 operator tests defined in this file: // // - "Simple Abs test example": a simple operator test for Abs operator. This example shows how to write a simple test with minimal properties. // // - "Conv2D with padding": a simple operator test for Conv operator with padding. This example shows how to write a test with all optional properties. // // test file starts with an array of test objects. [ // this is the first operator test object (Abs example). { "name": "Simple Abs op test example", // name of the test "operator": "Abs", // OpType of the operator "cases": [ // in this example, we only have one test case. { // name of the test case "name": "3D float32 test", "inputs": [ // specify the input tensor { "data": [1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, -1, -2, -3, -4, -5, -6, -7, -8, 101, 102, 103, 104], "dims": [2, 3, 4], "type": "float32" } ], "outputs": [ { "data": [1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 1, 2, 3, 4, 5, 6, 7, 8, 101, 102, 103, 104], "dims": [2, 3, 4], "type": "float32" } ] } ] }, // this is the second operator test object (Conv example). { // name of the test "name": "Conv op test example", // OpType of the operator "operator": "Conv", // [optional] specify the attributes of the operator "attributes": [{ "name": "kernel_shape", "data": [2, 2], "type": "ints" }], // [optional] specify a regex pattern to match the platform description. // // If not specified, the test will run on all platforms. // Otherwise, the test will only run on platforms that match the pattern. "platformCondition": "", // [optional] specify input shape definitions. // // Sometimes, input shape definitions can offer shape information for ONNX Runtime to optimize its inferencing behavior. // For example, ORT will transform a NCHW Conv operator into a NHWC operator when the input shape is 4 dimensional. // If the input shape dimension is unknown, ORT will not perform this optimization. // // In operator test, we can specify input shape definitions to test the optimized behavior. // // The array of input shape definitions should have the same length as the number of model's inputs. // "inputShapeDefinitions": [ // input 0 shape definition. use semantic names to specify the dynamic dimensions. ["__input_0_dim_0", "__input_0_dim_1", "__input_0_dim_2", "__input_0_dim_3"], // input 1 shape definition. use numbers to specify the static dimensions. [1, 1, 2, 2] ], // [optional] specify the opset of the operator. "opset": { "domain": "", "version": 13 }, // test cases is required. "cases": [ { "name": "NCHW Conv2D test", "inputs": [ { "data": [10, 20, 30, 40, 50, 60, 70, 80, 90], "dims": [1, 1, 3, 3], "type": "float32" }, // an input or output can be optional, depending on the operator. // if an input or output is optional, we can specify it as follows: // // { // "data": null, // "type": "float32" // } { "data": [1, 2, 3, 4], "dims": [1, 1, 2, 2], "type": "float32" } ], "outputs": [ { "data": [370, 470, 670, 770], "dims": [1, 1, 2, 2], "type": "float32" } ] } ] } ]