mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-05-14 20:48:00 +00:00
110 lines
3.7 KiB
Text
110 lines
3.7 KiB
Text
// 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"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|