| { |
| "op": "ai.onnx.ConvTranspose", |
| "fixtureArrays": { |
| "grouped_two_groups_no_bias_input_x": [1, 2, 3, 4, -1, -2, 0.5, 1.5, 2, -3, 4, -5, 0.25, -0.5, 0.75, -1], |
| "grouped_two_groups_no_bias_input_w": [1, 0, 0.5, -1, -0.25, 0.75, 1.5, 0, 0.5, -0.5, 1, 0.25, 1.25, 0, -0.75, 0.5, -1, 0.5, 0.25, 1, 0.75, -1.25, 0, 0.5, 0.25, 1.5, -0.5, 0, -0.75, 0.5, 1, -1], |
| "ort_default_strides_dilations_multi_channel_input_x": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], |
| "onnx_backend_convtranspose_input_w": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], |
| "f16_1d_nobias_input_x": [0.1, 0.5, -0.25, 0.75, 1, -0.5, 0.25, -1, 0.5, -0.75, 1.25, -0.25, 0, 0.5, -1, 0.75], |
| "f16_1d_nobias_input_w": [0.5, -0.25, 1, 0.75, -0.5, 0.25, -1, 0.5, 0.125, 1, -0.5, 0.25, 0.5, 0.75, -0.25, -0.75, 0.5, 1] |
| }, |
| "cases": [ |
| { |
| "name": "f32_subnormal_times_large_scale_1d_gpu_gap", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest", |
| "notes": "A 1D transposed convolution with a pointwise large finite weight should preserve subnormal input signal as normal finite output." |
| }, |
| "attrs": {}, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 4], |
| "data": { "kind": "values", "values": [1e-39, -1e-39, 1e-38, -1e-38] } |
| }, |
| "w": { "dtype": "float32", "shape": [1, 1, 1], "data": { "kind": "constant", "value": 1e+38 } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 4], "tolerance": 0.000001 } }, |
| "skipGpu": { |
| "category": "permanent", |
| "reason": "Portable WGSL floating-point semantics do not guarantee preservation of the subnormal values required by this fixture. Backend evidence: Metal flushes f32 subnormals to zero (FTZ); subnormal-magnitude values cannot survive the GPU arithmetic path." |
| } |
| }, |
| { |
| "name": "f32_subnormal_times_large_scale_2d_gpu_gap", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest", |
| "notes": "A 2D transposed convolution with a pointwise large finite weight should preserve subnormal input signal as normal finite output." |
| }, |
| "attrs": {}, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 2, 2], |
| "data": { "kind": "values", "values": [1e-39, -1e-39, 1e-38, -1e-38] } |
| }, |
| "w": { "dtype": "float32", "shape": [1, 1, 1, 1], "data": { "kind": "constant", "value": 1e+38 } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 2, 2], "tolerance": 0.000001 } }, |
| "skipGpu": { |
| "category": "permanent", |
| "reason": "Portable WGSL floating-point semantics do not guarantee preservation of the subnormal values required by this fixture. Backend evidence: Metal flushes f32 subnormals to zero (FTZ); subnormal-magnitude values cannot survive the GPU arithmetic path." |
| } |
| }, |
| { |
| "name": "f32_subnormal_times_large_scale_3d_gpu_gap", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest", |
| "notes": "A 3D transposed convolution with a pointwise large finite weight should preserve subnormal input signal as normal finite output." |
| }, |
| "attrs": {}, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 2, 2, 2], |
| "data": { "kind": "values", "values": [1e-39, -1e-39, 2e-39, -2e-39, 5e-39, -5e-39, 1e-38, -1e-38] } |
| }, |
| "w": { "dtype": "float32", "shape": [1, 1, 1, 1, 1], "data": { "kind": "constant", "value": 1e+38 } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 2, 2, 2], "tolerance": 0.000001 } }, |
| "skipGpu": { |
| "category": "permanent", |
| "reason": "Portable WGSL floating-point semantics do not guarantee preservation of the subnormal values required by this fixture. Backend evidence: Metal flushes f32 subnormals to zero (FTZ); subnormal-magnitude values cannot survive the GPU arithmetic path." |
| } |
| }, |
| { |
| "name": "dispatch_cliff_ncl1d", |
| "attrs": {}, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 16776961], |
| "data": { "kind": "cycle", "values": [0.5, -0.25, 1.0, -0.75] } |
| }, |
| "w": { "dtype": "float32", "shape": [1, 1, 1], "data": { "kind": "constant", "value": 2.0 } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 16776961], "tolerance": 0.00001 } } |
| }, |
| { |
| "name": "phase_tiled_1d_k4s2_batch_channel_position_tails", |
| "provenance": { |
| "notes": "Exercises the neural-audio stride-2 phase decomposition with non-tile-aligned input channels, output channels, positions, and batch > 1." |
| }, |
| "attrs": { "strides": [2], "pads": [1, 1] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [2, 37, 35], |
| "data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.17, "scale": 0.2 } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [37, 13, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.13, "scale": 0.1 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [2, 13, 70], "tolerance": 0.00002 } } |
| }, |
| { |
| "name": "phase_tiled_1d_k4s2_bias_tails", |
| "provenance": { "notes": "Bias companion for the phase-tiled neural-audio path with channel and position tails." }, |
| "attrs": { "strides": [2], "pads": [1, 1] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 17, 33], |
| "data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.23, "scale": 0.2 } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [17, 19, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.29, "scale": 0.1 } |
| }, |
| "bias": { |
| "dtype": "float32", |
| "shape": [19], |
| "data": { "kind": "fillFloat32", "sinStep": 0.05, "cosStep": 0.31, "scale": 0.05 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 19, 66], "tolerance": 0.00002 } } |
| }, |
| { |
| "name": "phase_tiled_1d_register_tile_channel_position_tails", |
| "provenance": { |
| "notes": "Crosses the occupancy-derived two-output register-tile threshold while retaining input-channel, output-channel, and position tails." |
| }, |
| "attrs": { "strides": [2], "pads": [1, 1] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 17, 1025], |
| "data": { "kind": "fillFloat32", "sinStep": 0.09, "cosStep": 0.21, "scale": 0.2 } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [17, 65, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.15, "cosStep": 0.27, "scale": 0.1 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 65, 2050], "tolerance": 0.00002 } } |
| }, |
| { |
| "name": "nchw_no_bias", |
| "attrs": { "strides": [2, 1], "pads": [1, 0, 1, 0] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 2, 3, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.17 } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [2, 2, 3, 2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.13 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 2, 5, 5], "tolerance": 0.00001 } } |
| }, |
| { |
| "name": "nchw_bias", |
| "attrs": { "strides": [2, 1], "pads": [1, 0, 1, 0] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 2, 3, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.17 } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [2, 2, 3, 2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.13 } |
| }, |
| "bias": { |
| "dtype": "float32", |
| "shape": [2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.29 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 2, 5, 5], "tolerance": 0.00001 } } |
| }, |
| { |
| "name": "non_vector_channels_no_bias", |
| "attrs": {}, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 3, 2, 2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.17 } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [3, 5, 2, 2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.23 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 5, 3, 3], "tolerance": 0.00001 } } |
| }, |
| { |
| "name": "non_vector_channels_bias", |
| "attrs": {}, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 3, 2, 2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.17 } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [3, 5, 2, 2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.23 } |
| }, |
| "bias": { |
| "dtype": "float32", |
| "shape": [5], |
| "data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.29 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 5, 3, 3], "tolerance": 0.00001 } } |
| }, |
| { |
| "name": "non_vector_channels_bias_stride2_compact", |
| "provenance": { |
| "notes": "Compact companion for bench case conv-transpose-f32-non-vector-bias-b1c3m5-32x32-k3s2, preserving non-vec channel counts, bias, stride=2, and padded k3 output geometry." |
| }, |
| "attrs": { "strides": [2, 2], "pads": [1, 1, 1, 1] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 3, 8, 8], |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.17, "scale": 0.2 } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [3, 5, 3, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.23, "scale": 0.12 } |
| }, |
| "bias": { |
| "dtype": "float32", |
| "shape": [5], |
| "data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.29, "scale": 0.1 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 5, 15, 15], "tolerance": 0.00001 } } |
| }, |
| { |
| "name": "output_padding_extends_shape", |
| "attrs": { "strides": [2, 2], "output_padding": [1, 1] }, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 1, 2, 2], "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0] } }, |
| "w": { |
| "dtype": "float32", |
| "shape": [1, 1, 2, 2], |
| "data": { "kind": "values", "values": [1.0, -1.0, 2.0, 0.5] } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 5, 5], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "dilated_kernel_spreads_taps", |
| "attrs": { "dilations": [2, 2] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0] } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [1, 1, 2, 2], |
| "data": { "kind": "values", "values": [1.0, -2.0, 0.5, 3.0] } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 5, 5], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "grouped_two_groups_no_bias", |
| "attrs": { "group": 2 }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 4, 2, 2], |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/grouped_two_groups_no_bias_input_x" } } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [4, 2, 2, 2], |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/grouped_two_groups_no_bias_input_w" } } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 4, 3, 3], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "f32_grouped2d_stride2_phase", |
| "provenance": { |
| "notes": "Compact grouped stride-2 fixture that exercises the phase-decomposed nchw2d_grouped_stride_phase fallback on every feature tier." |
| }, |
| "attrs": { "group": 2, "strides": [2, 2], "pads": [1, 1, 1, 1] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 4, 3, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.17, "scale": 0.25 } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [4, 3, 3, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.13, "scale": 0.2 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 6, 5, 7], "tolerance": 0.00001 } } |
| }, |
| { |
| "name": "grouped_two_groups_bias", |
| "attrs": { "group": 2 }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 4, 2, 2], |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/grouped_two_groups_no_bias_input_x" } } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [4, 2, 2, 2], |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/grouped_two_groups_no_bias_input_w" } } |
| }, |
| "bias": { "dtype": "float32", "shape": [4], "data": { "kind": "values", "values": [0.5, -1.0, 1.5, -0.25] } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 4, 3, 3], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_zero_batch_dim", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.DimWithZero" |
| }, |
| "attrs": { "strides": [2, 2], "pads": [1, 1, 1, 1], "output_padding": [1, 1] }, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [0, 1, 3, 3], "data": { "kind": "values", "values": [] } }, |
| "w": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "data": { |
| "kind": "values", |
| "values": [-0.06230065, 0.37932432, -0.25388849, 0.33878803, 0.43709868, -0.22477469, 0.04118127, -0.44696793, 0.06373066] |
| } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [0, 1, 6, 6], "tolerance": 0 } } |
| }, |
| { |
| "name": "ort_outputpadding_strides2", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_2D_outputpadding_strides2" |
| }, |
| "attrs": { "strides": [2, 2], "pads": [1, 1, 1, 1], "output_padding": [1, 1] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "data": { |
| "kind": "values", |
| "values": [0.16857791, -0.15161794, 0.08540368, 0.1820628, -0.21746576, 0.08245695, 0.1431433, -0.43156421, 0.30591947] |
| } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "data": { |
| "kind": "values", |
| "values": [-0.06230065, 0.37932432, -0.25388849, 0.33878803, 0.43709868, -0.22477469, 0.04118127, -0.44696793, 0.06373066] |
| } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 6, 6], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_outputpadding_strides2_f16", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_2D_outputpadding_strides2" |
| }, |
| "attrs": { "strides": [2, 2], "pads": [1, 1, 1, 1], "output_padding": [1, 1] }, |
| "inputs": { |
| "x": { |
| "dtype": "float16", |
| "shape": [1, 1, 3, 3], |
| "data": { |
| "kind": "values", |
| "values": [0.16857791, -0.15161794, 0.08540368, 0.1820628, -0.21746576, 0.08245695, 0.1431433, -0.43156421, 0.30591947] |
| } |
| }, |
| "w": { |
| "dtype": "float16", |
| "shape": [1, 1, 3, 3], |
| "data": { |
| "kind": "values", |
| "values": [-0.06230065, 0.37932432, -0.25388849, 0.33878803, 0.43709868, -0.22477469, 0.04118127, -0.44696793, 0.06373066] |
| } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float16", "shape": [1, 1, 6, 6], "tolerance": 0.001 } } |
| }, |
| { |
| "name": "ort_2d_c2_single_output_channel", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_2D_C2" |
| }, |
| "attrs": {}, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 2, 3, 3], |
| "data": { |
| "kind": "values", |
| "values": [0.43, 0.42871707, 0.29552766, 0.17258859, 0.68087016, 0.7090254, 0.60937387, 0.58646585, 0.84525721, 0.47011843, 0.95854213, 0.3972888, 0.0585452, 0.1206734, 0.76727852, 0.46040912, 0.83495316, 0.02409773] |
| } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [2, 1, 2, 2], |
| "data": { |
| "kind": "values", |
| "values": [0.25616416, 0.10246604, 0.08771133, 0.30770606, 0.84369617, 0.3010619, 0.44524362, 0.6056068] |
| } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 4, 4], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_dilation2_kernel2_simple", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_2D_Dilation_1" |
| }, |
| "attrs": { "dilations": [2, 2] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 2, 2], |
| "data": { "kind": "values", "values": [11.0, 12.0, 21.0, 22.0] } |
| }, |
| "w": { "dtype": "float32", "shape": [1, 1, 2, 2], "data": { "kind": "values", "values": [1.0, 1.0, 1.0, 1.0] } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 4, 4], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_dilation3_kernel2_mixed_values", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_2D_Dilation_4" |
| }, |
| "attrs": { "dilations": [3, 3] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "data": { "kind": "values", "values": [3.0, 8.0, 1.0, 9.0, 5.0, 7.0, 3.0, 2.0, 6.0] } |
| }, |
| "w": { "dtype": "float32", "shape": [1, 1, 2, 2], "data": { "kind": "values", "values": [7.0, 2.0, 1.0, 9.0] } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 6, 6], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_dilation3_asymmetric_pads_top_left", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_2D_Dilation_AsymmetricPads_1" |
| }, |
| "attrs": { "pads": [2, 2, 1, 1], "dilations": [3, 3] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "data": { "kind": "values", "values": [3.0, 8.0, 1.0, 9.0, 5.0, 7.0, 3.0, 2.0, 6.0] } |
| }, |
| "w": { "dtype": "float32", "shape": [1, 1, 2, 2], "data": { "kind": "values", "values": [7.0, 2.0, 1.0, 9.0] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "tolerance": 0.000001, |
| "data": { "kind": "values", "values": [42.0, 6.0, 4.0, 1.0, 27.0, 72.0, 7.0, 81.0, 45.0] } |
| } |
| } |
| }, |
| { |
| "name": "ort_dilation3_asymmetric_pads_bottom_right", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_2D_Dilation_AsymmetricPads_2" |
| }, |
| "attrs": { "pads": [1, 1, 2, 2], "dilations": [3, 3] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "data": { "kind": "values", "values": [3.0, 8.0, 1.0, 9.0, 5.0, 7.0, 3.0, 2.0, 6.0] } |
| }, |
| "w": { "dtype": "float32", "shape": [1, 1, 2, 2], "data": { "kind": "values", "values": [7.0, 2.0, 1.0, 9.0] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "tolerance": 0.000001, |
| "data": { "kind": "values", "values": [35.0, 49.0, 18.0, 14.0, 42.0, 6.0, 8.0, 1.0, 27.0] } |
| } |
| } |
| }, |
| { |
| "name": "ort_dilation3_asymmetric_pads_crop_top_left", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_2D_Dilation_AsymmetricPads_3" |
| }, |
| "attrs": { "pads": [2, 2, 0, 0], "dilations": [3, 3] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "data": { "kind": "values", "values": [3.0, 8.0, 1.0, 9.0, 5.0, 7.0, 3.0, 2.0, 6.0] } |
| }, |
| "w": { "dtype": "float32", "shape": [1, 1, 2, 2], "data": { "kind": "values", "values": [7.0, 2.0, 1.0, 9.0] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "float32", |
| "shape": [1, 1, 4, 4], |
| "tolerance": 0.000001, |
| "data": { |
| "kind": "values", |
| "values": [42.0, 6.0, 4.0, 12.0, 1.0, 27.0, 72.0, 9.0, 7.0, 81.0, 45.0, 63.0, 6.0, 27.0, 18.0, 54.0] |
| } |
| } |
| } |
| }, |
| { |
| "name": "ort_dilation3_asymmetric_pads_crop_bottom_right", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_2D_Dilation_AsymmetricPads_4" |
| }, |
| "attrs": { "pads": [0, 0, 2, 2], "dilations": [3, 3] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "data": { "kind": "values", "values": [3.0, 8.0, 1.0, 9.0, 5.0, 7.0, 3.0, 2.0, 6.0] } |
| }, |
| "w": { "dtype": "float32", "shape": [1, 1, 2, 2], "data": { "kind": "values", "values": [7.0, 2.0, 1.0, 9.0] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "float32", |
| "shape": [1, 1, 4, 4], |
| "tolerance": 0.000001, |
| "data": { |
| "kind": "values", |
| "values": [21.0, 56.0, 7.0, 6.0, 63.0, 35.0, 49.0, 18.0, 21.0, 14.0, 42.0, 6.0, 3.0, 8.0, 1.0, 27.0] |
| } |
| } |
| } |
| }, |
| { |
| "name": "ort_default_strides_dilations_multi_channel", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_DefaultStridesAndDilations" |
| }, |
| "attrs": {}, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 2, 3, 3], |
| "data": { |
| "kind": "values", |
| "values": { "$ref": "#/fixtureArrays/ort_default_strides_dilations_multi_channel_input_x" } |
| } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [2, 3, 2, 2], |
| "data": { |
| "kind": "values", |
| "values": [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0] |
| } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 3, 4, 4], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_stride_width2_dilation_width3", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_2D_NonDefaultStridesAndDilations" |
| }, |
| "attrs": { "strides": [1, 2], "dilations": [1, 3] }, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 1, 1, 2], "data": { "kind": "values", "values": [1.0, 2.0] } }, |
| "w": { "dtype": "float32", "shape": [1, 1, 1, 4], "data": { "kind": "values", "values": [1.0, 1.0, 1.0, 1.0] } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 1, 12], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_stride_height2_dilation_height3", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_2D_NonDefaultStridesAndDilations_T" |
| }, |
| "attrs": { "strides": [2, 1], "dilations": [3, 1] }, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 1, 2, 1], "data": { "kind": "values", "values": [1.0, 2.0] } }, |
| "w": { "dtype": "float32", "shape": [1, 1, 4, 1], "data": { "kind": "values", "values": [1.0, 1.0, 1.0, 1.0] } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 12, 1], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_2d_bias_3x3_padded", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_2D_Bias_1" |
| }, |
| "attrs": { "pads": [1, 1, 1, 1] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 5, 5], |
| "data": { |
| "kind": "values", |
| "values": [0.22572887, -0.07105902, -0.40399021, -0.14461157, 0.05367219, -0.08353302, 0.41023391, 0.42745841, -0.3769345, -0.42057109, -0.1372498, 0.05485916, 0.34602994, -0.06402895, -0.06000063, 0.07891446, -0.09410021, 0.26251942, -0.11043271, 0.47966552, 0.34682763, -0.04511502, 0.22414422, 0.24618894, -0.21480265] |
| } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "data": { |
| "kind": "values", |
| "values": [-0.0962126, 0.19827795, 0.03667754, 0.36756599, -0.01076147, -0.11781135, -0.11574665, -0.38404959, 0.44403327] |
| } |
| }, |
| "bias": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [0.04676145] } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 5, 5], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_2d_bias_2x2_no_pad", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_2D_Bias_2" |
| }, |
| "attrs": {}, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 7, 7], |
| "data": { |
| "kind": "values", |
| "values": [0.01270282, 0.09657472, -0.36909008, -0.08085269, 0.0242992, 0.40873009, -0.46927932, 0.34412372, -0.39574206, 0.26234281, 0.27352369, -0.22265741, 0.43270493, -0.24710381, -0.03418651, -0.04413456, -0.16414353, 0.3158558, 0.1087395, -0.38577938, -0.38986659, -0.09614426, 0.17591673, 0.40140027, -0.0869683, -0.47193506, -0.05010766, 0.29325962, 0.22680271, -0.0793834, -0.36764491, 0.20451134, 0.46361887, -0.12190259, 0.03413916, 0.12307656, 0.28569579, -0.392129, 0.17179191, 0.27161086, -0.12766263, 0.1371125, 0.28137422, -0.39899838, 0.23824286, -0.19693244, 0.32956779, 0.46209556, -0.46913007] |
| } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [1, 1, 2, 2], |
| "data": { "kind": "values", "values": [-0.34922412, 0.1114341, -0.01778314, 0.46861196] } |
| }, |
| "bias": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [0.17402864] } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 8, 8], "tolerance": 0.00001 } } |
| }, |
| { |
| "name": "ort_1d_mixed_channels", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_1D" |
| }, |
| "attrs": {}, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 2, 3], |
| "data": { "kind": "values", "values": [0.1, 1.0, 2.0, 3.0, 4.0, 5.0] } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [2, 2, 3], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0] } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 2, 5], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_1d_asymmetric_padding", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_1D_AsymmetricPads" |
| }, |
| "attrs": { "pads": [1, 0] }, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 1, 4], "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0] } }, |
| "w": { "dtype": "float32", "shape": [1, 2, 2], "data": { "kind": "values", "values": [1.0, 1.0, 1.0, 1.0] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "float32", |
| "shape": [1, 2, 4], |
| "tolerance": 0.000001, |
| "data": { "kind": "values", "values": [3.0, 5.0, 7.0, 4.0, 3.0, 5.0, 7.0, 4.0] } |
| } |
| } |
| }, |
| { |
| "name": "ort_output_shape_2_bias_single_row", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_2D_OutputShape_2", |
| "notes": "ORT uses the exact output_shape attribute; this fixture has the same natural output size." |
| }, |
| "attrs": { "output_shape": [1, 14] }, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 1, 1, 10], "data": { "kind": "linspace", "start": 0.0, "end": 9.0 } }, |
| "w": { |
| "dtype": "float32", |
| "shape": [1, 1, 1, 5], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 2.0, 1.0] } |
| }, |
| "bias": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [1.0] } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 1, 14], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_output_shape_with_batch_size_bias_single_row", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_2D_OutputShapeWithBatchSize", |
| "notes": "ORT uses the exact output_shape attribute; this fixture has the same natural output size." |
| }, |
| "attrs": { "output_shape": [1, 14] }, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [2, 1, 1, 10], "data": { "kind": "linspace", "start": 0.0, "end": 19.0 } }, |
| "w": { |
| "dtype": "float32", |
| "shape": [1, 1, 1, 5], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 2.0, 1.0] } |
| }, |
| "bias": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [1.0] } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [2, 1, 1, 14], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_output_shape_1_equivalent_symmetric_crop", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_2D_OutputShape_1", |
| "notes": "Covers the exact spatial output_shape [4, 4]; ConvTranspose derives the required symmetric crop." |
| }, |
| "attrs": { "output_shape": [4, 4] }, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 3, 4, 4], "data": { "kind": "constant", "value": 1.0 } }, |
| "w": { "dtype": "float32", "shape": [3, 3, 3, 3], "data": { "kind": "constant", "value": 1.0 } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 3, 4, 4], "tolerance": 0 } } |
| }, |
| { |
| "name": "ort_dilation3_kernel2_repeated_tiles", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_2D_Dilation_2" |
| }, |
| "attrs": { "dilations": [3, 3] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 2, 2], |
| "data": { "kind": "values", "values": [11.0, 12.0, 21.0, 22.0] } |
| }, |
| "w": { "dtype": "float32", "shape": [1, 1, 2, 2], "data": { "kind": "constant", "value": 1.0 } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 5, 5], "tolerance": 0 } } |
| }, |
| { |
| "name": "ort_dilation2_kernel2_mixed_values", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_2D_Dilation_3" |
| }, |
| "attrs": { "dilations": [2, 2] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "data": { "kind": "values", "values": [3.0, 8.0, 1.0, 9.0, 5.0, 7.0, 3.0, 2.0, 6.0] } |
| }, |
| "w": { "dtype": "float32", "shape": [1, 1, 2, 2], "data": { "kind": "values", "values": [7.0, 2.0, 1.0, 9.0] } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 5, 5], "tolerance": 0 } } |
| }, |
| { |
| "name": "onnx_backend_convtranspose", |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "data": { "kind": "values", "values": [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [1, 2, 3, 3], |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/onnx_backend_convtranspose_input_w" } } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 2, 5, 5] } }, |
| "provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_convtranspose" } |
| }, |
| { |
| "name": "onnx_backend_convtranspose_dilations", |
| "attrs": { "dilations": [2, 2] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "data": { "kind": "values", "values": [3.0, 8.0, 1.0, 9.0, 5.0, 7.0, 3.0, 2.0, 6.0] } |
| }, |
| "w": { "dtype": "float32", "shape": [1, 1, 2, 2], "data": { "kind": "values", "values": [7.0, 2.0, 1.0, 9.0] } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 5, 5] } }, |
| "provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_convtranspose_dilations" } |
| }, |
| { |
| "name": "onnx_backend_convtranspose_group_2", |
| "attrs": { "group": 2 }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 2, 3, 3], |
| "data": { |
| "kind": "values", |
| "values": { "$ref": "#/fixtureArrays/ort_default_strides_dilations_multi_channel_input_x" } |
| } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [2, 1, 3, 3], |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/onnx_backend_convtranspose_input_w" } } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 2, 5, 5] } }, |
| "provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_convtranspose_group_2" } |
| }, |
| { |
| "name": "onnx_backend_convtranspose_group_2_image_3", |
| "attrs": { "group": 2 }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [3, 2, 3, 3], |
| "data": { |
| "kind": "values", |
| "values": [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0] |
| } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [2, 1, 3, 3], |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/onnx_backend_convtranspose_input_w" } } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [3, 2, 5, 5] } }, |
| "provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_convtranspose_group_2_image_3" } |
| }, |
| { |
| "name": "onnx_backend_convtranspose_pad", |
| "attrs": { "strides": [3, 2], "output_padding": [1, 1] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "data": { "kind": "values", "values": [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [1, 2, 3, 3], |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/onnx_backend_convtranspose_input_w" } } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 2, 10, 8] } }, |
| "provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_convtranspose_pad" } |
| }, |
| { |
| "name": "onnx_backend_convtranspose_pads", |
| "attrs": { "strides": [3, 2], "pads": [1, 2, 1, 2] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "data": { "kind": "values", "values": [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [1, 2, 3, 3], |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/onnx_backend_convtranspose_input_w" } } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 2, 7, 3] } }, |
| "provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_convtranspose_pads" } |
| }, |
| { |
| "name": "onnx_backend_convtranspose_autopad_same_explicit", |
| "attrs": { "strides": [2, 2], "auto_pad": "SAME_UPPER" }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "data": { "kind": "values", "values": [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [1, 2, 3, 3], |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/onnx_backend_convtranspose_input_w" } } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 2, 6, 6], "tolerance": 0 } }, |
| "provenance": { |
| "source": "cmake/external/onnx/onnx/backend/test/data/node/test_convtranspose_autopad_same", |
| "notes": "SAME_UPPER is represented by equivalent explicit symmetric pads plus output padding for this fixture." |
| } |
| }, |
| { |
| "name": "onnx_backend_convtranspose_output_shape_as_output_padding", |
| "attrs": { "strides": [3, 2], "output_shape": [10, 8] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "data": { "kind": "values", "values": [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [1, 2, 3, 3], |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/onnx_backend_convtranspose_input_w" } } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 2, 10, 8], "tolerance": 0 } }, |
| "provenance": { |
| "source": "cmake/external/onnx/onnx/backend/test/data/node/test_convtranspose_output_shape", |
| "notes": "Uses the official spatial output_shape attribute from the ONNX backend fixture." |
| } |
| }, |
| { |
| "name": "onnx_backend_convtranspose_kernel_shape_output_padding", |
| "attrs": { "strides": [3, 2], "output_padding": [1, 1], "output_shape": [10, 8], "kernel_shape": [3, 3] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "data": { "kind": "values", "values": [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [1, 2, 3, 3], |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/onnx_backend_convtranspose_input_w" } } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 2, 10, 8], "tolerance": 0 } }, |
| "provenance": { |
| "source": "cmake/external/onnx/onnx/backend/test/data/node/test_convtranspose_kernel_shape", |
| "notes": "Uses the official kernel_shape, output_shape, and output_padding attributes from the ONNX backend fixture." |
| } |
| }, |
| { |
| "name": "onnx_backend_convtranspose_1d", |
| "provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_convtranspose_1d" }, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 1, 3], "data": { "kind": "linspace", "start": 0.0, "end": 2.0 } }, |
| "w": { "dtype": "float32", "shape": [1, 2, 3], "data": { "kind": "constant", "value": 1.0 } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 2, 5], "tolerance": 0 } } |
| }, |
| { |
| "name": "ort_convtranspose_1d_autopad_same_upper", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_1D_AutoPad_SameUpper", |
| "notes": "Covers one-dimensional ConvTranspose with auto_pad=SAME_UPPER." |
| }, |
| "attrs": { "auto_pad": "SAME_UPPER" }, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 1, 4], "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0] } }, |
| "w": { "dtype": "float32", "shape": [1, 2, 2], "data": { "kind": "constant", "value": 1.0 } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "float32", |
| "shape": [1, 2, 4], |
| "tolerance": 0, |
| "data": { "kind": "values", "values": [1.0, 3.0, 5.0, 7.0, 1.0, 3.0, 5.0, 7.0] } |
| } |
| } |
| }, |
| { |
| "name": "ort_convtranspose_1d_autopad_same_lower", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_1D_AutoPad_SameLower", |
| "notes": "Covers one-dimensional ConvTranspose with auto_pad=SAME_LOWER." |
| }, |
| "attrs": { "auto_pad": "SAME_LOWER" }, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 1, 4], "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0] } }, |
| "w": { "dtype": "float32", "shape": [1, 2, 2], "data": { "kind": "constant", "value": 1.0 } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "float32", |
| "shape": [1, 2, 4], |
| "tolerance": 0, |
| "data": { "kind": "values", "values": [3.0, 5.0, 7.0, 4.0, 3.0, 5.0, 7.0, 4.0] } |
| } |
| } |
| }, |
| { |
| "name": "ort_convtranspose_2d_autopad_same_upper_stride2", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_AutoPad_with_non_default_strides", |
| "notes": "Covers two-dimensional stride-2 ConvTranspose with auto_pad=SAME_UPPER." |
| }, |
| "attrs": { "auto_pad": "SAME_UPPER", "strides": [2, 2] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 3, 3], |
| "data": { "kind": "values", "values": [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] } |
| }, |
| "w": { "dtype": "float32", "shape": [1, 2, 3, 3], "data": { "kind": "constant", "value": 1.0 } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 2, 6, 6], "tolerance": 0 } } |
| }, |
| { |
| "name": "ort_convtranspose_1d_grouped", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_1D_OutputShape_1_group_2_for_transpose_path", |
| "notes": "Covers grouped one-dimensional ConvTranspose." |
| }, |
| "attrs": { "group": 2 }, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 2, 2], "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0] } }, |
| "w": { "dtype": "float32", "shape": [2, 1, 1], "data": { "kind": "values", "values": [2.0, 3.0] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "float32", |
| "shape": [1, 2, 2], |
| "tolerance": 0.000001, |
| "data": { "kind": "values", "values": [2.0, 4.0, 9.0, 12.0] } |
| } |
| } |
| }, |
| { |
| "name": "ncl1d_grouped_bias", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_1D_OutputShape_1_group_2_for_transpose_path", |
| "notes": "Grouped (group=2) 1D ConvTranspose WITH bias. Exercises the ncl1d_grouped_bias variant." |
| }, |
| "attrs": { "group": 2 }, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 2, 2], "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0] } }, |
| "w": { "dtype": "float32", "shape": [2, 1, 1], "data": { "kind": "values", "values": [2.0, 3.0] } }, |
| "bias": { "dtype": "float32", "shape": [2], "data": { "kind": "values", "values": [0.25, -0.5] } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 2, 2], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "ort_convtranspose_1d_bias", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_2D_Bias_2", |
| "notes": "Covers one-dimensional ConvTranspose with the optional bias input." |
| }, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 1, 3], "data": { "kind": "values", "values": [1.0, 2.0, 3.0] } }, |
| "w": { "dtype": "float32", "shape": [1, 2, 2], "data": { "kind": "values", "values": [1.0, 2.0, -1.0, 0.5] } }, |
| "bias": { "dtype": "float32", "shape": [2], "data": { "kind": "values", "values": [0.25, -0.5] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "float32", |
| "shape": [1, 2, 4], |
| "tolerance": 0.000001, |
| "data": { "kind": "values", "values": [1.25, 4.25, 7.25, 6.25, -1.5, -2.0, -2.5, 1.0] } |
| } |
| } |
| }, |
| { |
| "name": "onnx_backend_convtranspose_3d", |
| "provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_convtranspose_3d" }, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 1, 3, 4, 5], "data": { "kind": "linspace", "start": 0.0, "end": 59.0 } }, |
| "w": { "dtype": "float32", "shape": [1, 2, 3, 3, 3], "data": { "kind": "constant", "value": 1.0 } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 2, 5, 6, 7], "tolerance": 0 } } |
| }, |
| { |
| "name": "ort_convtranspose_3d_bias", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_3D", |
| "notes": "Covers three-dimensional 1x1x1 ConvTranspose with the optional bias input." |
| }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 1, 2, 2, 2], |
| "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, -1.0, -2.0, -3.0, -4.0] } |
| }, |
| "w": { "dtype": "float32", "shape": [1, 1, 1, 1, 1], "data": { "kind": "values", "values": [1.0] } }, |
| "bias": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [0.25] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "float32", |
| "shape": [1, 1, 2, 2, 2], |
| "tolerance": 0.000001, |
| "data": { "kind": "values", "values": [1.25, 2.25, 3.25, 4.25, -0.75, -1.75, -2.75, -3.75] } |
| } |
| } |
| }, |
| { |
| "name": "nchw2d_bias_f16", |
| "attrs": { "strides": [2, 2], "pads": [1, 1, 1, 1], "output_padding": [1, 1] }, |
| "inputs": { |
| "x": { |
| "dtype": "float16", |
| "shape": [1, 1, 3, 3], |
| "data": { |
| "kind": "values", |
| "values": [0.16857791, -0.15161794, 0.08540368, 0.1820628, -0.21746576, 0.08245695, 0.1431433, -0.43156421, 0.30591947] |
| } |
| }, |
| "w": { |
| "dtype": "float16", |
| "shape": [1, 1, 3, 3], |
| "data": { |
| "kind": "values", |
| "values": [-0.06230065, 0.37932432, -0.25388849, 0.33878803, 0.43709868, -0.22477469, 0.04118127, -0.44696793, 0.06373066] |
| } |
| }, |
| "bias": { "dtype": "float16", "shape": [1], "data": { "kind": "values", "values": [0.25] } } |
| }, |
| "outputs": { "y": { "dtype": "float16", "shape": [1, 1, 6, 6], "tolerance": 0.001 } } |
| }, |
| { |
| "name": "f16_1d_nobias", |
| "attrs": {}, |
| "inputs": { |
| "x": { |
| "dtype": "float16", |
| "shape": [1, 2, 8], |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/f16_1d_nobias_input_x" } } |
| }, |
| "w": { |
| "dtype": "float16", |
| "shape": [2, 3, 3], |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/f16_1d_nobias_input_w" } } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float16", "shape": [1, 3, 10], "tolerance": 0.02 } } |
| }, |
| { |
| "name": "f16_grouped2d_nobias", |
| "attrs": { "group": 2, "strides": [2, 2], "pads": [1, 1, 1, 1] }, |
| "inputs": { |
| "x": { |
| "dtype": "float16", |
| "shape": [1, 4, 8, 8], |
| "data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.17 } |
| }, |
| "w": { |
| "dtype": "float16", |
| "shape": [4, 3, 3, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.13 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float16", "shape": [1, 6, 15, 15], "tolerance": 0.03 } } |
| }, |
| { |
| "name": "f16_autopad_same_upper_stride2", |
| "attrs": { "auto_pad": "SAME_UPPER", "strides": [2, 2] }, |
| "inputs": { |
| "x": { |
| "dtype": "float16", |
| "shape": [1, 2, 4, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.17 } |
| }, |
| "w": { |
| "dtype": "float16", |
| "shape": [2, 3, 3, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.23 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float16", "shape": [1, 3, 8, 8], "tolerance": 0.03 } } |
| }, |
| { |
| "name": "nchw2d_f16_nobias", |
| "attrs": {}, |
| "inputs": { |
| "x": { |
| "dtype": "float16", |
| "shape": [1, 2, 4, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.17 } |
| }, |
| "w": { |
| "dtype": "float16", |
| "shape": [2, 3, 3, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.13 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float16", "shape": [1, 3, 6, 6], "tolerance": 0.02 } } |
| }, |
| { |
| "name": "f16_phase_gemm_k4s2_channel_and_spatial_tails", |
| "provenance": { |
| "notes": "Compact route lock for the fused four-phase k4s2 GEMM path. Odd channel and spatial sizes exercise K, M, and N tile tails plus all padded boundaries." |
| }, |
| "attrs": { "strides": [2, 2], "pads": [1, 1, 1, 1] }, |
| "inputs": { |
| "x": { |
| "dtype": "float16", |
| "shape": [1, 5, 7, 9], |
| "data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.17, "scale": 0.2 } |
| }, |
| "w": { |
| "dtype": "float16", |
| "shape": [5, 11, 4, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.13, "scale": 0.1 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float16", "shape": [1, 11, 14, 18], "tolerance": 0.03 } } |
| }, |
| { |
| "name": "f16_phase_gemm_k4s2_bias_tails", |
| "provenance": { |
| "notes": "Bias companion for the fused four-phase k4s2 path with non-tile-aligned channels and phase-grid dimensions." |
| }, |
| "attrs": { "strides": [2, 2], "pads": [1, 1, 1, 1] }, |
| "inputs": { |
| "x": { |
| "dtype": "float16", |
| "shape": [1, 3, 5, 6], |
| "data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.23, "scale": 0.2 } |
| }, |
| "w": { |
| "dtype": "float16", |
| "shape": [3, 7, 4, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.29, "scale": 0.1 } |
| }, |
| "bias": { |
| "dtype": "float16", |
| "shape": [7], |
| "data": { "kind": "fillFloat32", "sinStep": 0.05, "cosStep": 0.31, "scale": 0.05 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float16", "shape": [1, 7, 10, 12], "tolerance": 0.03 } } |
| }, |
| { |
| "name": "f16_gemm_2d_no_bias", |
| "provenance": { |
| "notes": "f16 2D ConvTranspose, group 1, IC%32==0 and IH*IW%64==0 -> exercises the im2col-GEMM path nchw2d_gemm (subgroup-matrix) AND the direct nchw2d_f16 kernel." |
| }, |
| "attrs": { "strides": [2, 2], "pads": [1, 1, 1, 1] }, |
| "inputs": { |
| "x": { |
| "dtype": "float16", |
| "shape": [1, 32, 8, 8], |
| "data": { "kind": "fillFloat32", "sinStep": 0.03, "cosStep": 0.07, "scale": 0.4 } |
| }, |
| "w": { |
| "dtype": "float16", |
| "shape": [32, 16, 3, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.05, "cosStep": 0.11, "scale": 0.4 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float16", "shape": [1, 16, 15, 15], "tolerance": 0.03 } } |
| }, |
| { |
| "name": "f16_gemm_2d_bias", |
| "provenance": { |
| "notes": "f16 2D ConvTranspose, group 1, IC%32==0 and IH*IW%64==0 -> exercises the im2col-GEMM path nchw2d_gemm_bias (subgroup-matrix) AND the direct nchw2d_f16 kernel." |
| }, |
| "attrs": { "strides": [2, 2], "pads": [1, 1, 1, 1] }, |
| "inputs": { |
| "x": { |
| "dtype": "float16", |
| "shape": [1, 32, 8, 8], |
| "data": { "kind": "fillFloat32", "sinStep": 0.03, "cosStep": 0.07, "scale": 0.4 } |
| }, |
| "w": { |
| "dtype": "float16", |
| "shape": [32, 16, 3, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.05, "cosStep": 0.11, "scale": 0.4 } |
| }, |
| "bias": { |
| "dtype": "float16", |
| "shape": [16], |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.19, "scale": 0.3 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float16", "shape": [1, 16, 15, 15], "tolerance": 0.03 } } |
| }, |
| { |
| "name": "f16_gemm_2d_batch2", |
| "provenance": { |
| "notes": "f16 2D ConvTranspose GEMM path with batch=2 — exercises the GEMM workgroup_id.z batching and col2im batch decode." |
| }, |
| "attrs": { "strides": [2, 2], "pads": [1, 1, 1, 1] }, |
| "inputs": { |
| "x": { |
| "dtype": "float16", |
| "shape": [2, 32, 8, 8], |
| "data": { "kind": "fillFloat32", "sinStep": 0.023, "cosStep": 0.061, "scale": 0.4 } |
| }, |
| "w": { |
| "dtype": "float16", |
| "shape": [32, 16, 3, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.05, "cosStep": 0.11, "scale": 0.4 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float16", "shape": [2, 16, 15, 15], "tolerance": 0.03 } } |
| }, |
| { |
| "name": "nchw2d_gemm_f32_reg_m512_n1024", |
| "attrs": {}, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.17 }, |
| "shape": [1, 8, 32, 32] |
| }, |
| "w": { |
| "dtype": "float32", |
| "data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.13 }, |
| "shape": [8, 128, 2, 2] |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 128, 33, 33], "tolerance": 0.0001 } } |
| }, |
| { |
| "name": "nchw2d_gemm_f32_bias_reg_m512_n1024", |
| "attrs": {}, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.17 }, |
| "shape": [1, 8, 32, 32] |
| }, |
| "w": { |
| "dtype": "float32", |
| "data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.13 }, |
| "shape": [8, 128, 2, 2] |
| }, |
| "bias": { |
| "dtype": "float32", |
| "data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.23 }, |
| "shape": [128] |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 128, 33, 33], "tolerance": 0.0001 } } |
| }, |
| { |
| "name": "empty_input_spatial_dim_3d_nonempty_output", |
| "provenance": { |
| "notes": "A zero-depth input leaves a nonempty rank-5 output because the kernel is wider than the empty spatial extent. The contraction is empty, so every output is the additive identity." |
| }, |
| "attrs": {}, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 1, 0, 3, 3] }, |
| "w": { "dtype": "float32", "shape": [1, 1, 3, 3, 3], "data": { "kind": "constant", "value": 1.0 } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 2, 5, 5], "data": { "kind": "constant", "value": 0.0 } } } |
| }, |
| { |
| "name": "empty_input_spatial_dim_3d_nonempty_output_bias", |
| "provenance": { |
| "notes": "Bias is applied after an empty rank-5 contraction, so each nonempty output channel is exactly its bias value without reading X or W." |
| }, |
| "attrs": {}, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 1, 0, 1, 1] }, |
| "w": { "dtype": "float32", "shape": [1, 2, 2, 1, 1], "data": { "kind": "constant", "value": 1.0 } }, |
| "bias": { "dtype": "float32", "shape": [2], "data": { "kind": "values", "values": [1.25, -2.5] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "float32", |
| "shape": [1, 2, 1, 1, 1], |
| "data": { "kind": "values", "values": [1.25, -2.5] }, |
| "tolerance": 0 |
| } |
| } |
| }, |
| { |
| "name": "empty_input_spatial_dim_2d_grouped_f16_nonempty_output", |
| "provenance": { |
| "notes": "The empty-reduction fill route also covers grouped rank-4 float16 without allocating or reading an im2col scratch buffer." |
| }, |
| "attrs": { "group": 2 }, |
| "inputs": { |
| "x": { "dtype": "float16", "shape": [1, 2, 0, 1] }, |
| "w": { "dtype": "float16", "shape": [2, 1, 2, 1], "data": { "kind": "constant", "value": 1.0 } } |
| }, |
| "outputs": { |
| "y": { "dtype": "float16", "shape": [1, 2, 1, 1], "data": { "kind": "constant", "value": 0.0 }, "tolerance": 0 } |
| } |
| }, |
| { |
| "name": "empty_input_spatial_dim_1d_f16_nonempty_output_bias", |
| "provenance": { |
| "notes": "The float16 bias-broadcast source is rendered explicitly: a zero-width rank-3 reduction returns one output position per channel containing only bias." |
| }, |
| "attrs": {}, |
| "inputs": { |
| "x": { "dtype": "float16", "shape": [1, 1, 0] }, |
| "w": { "dtype": "float16", "shape": [1, 2, 2], "data": { "kind": "constant", "value": 1.0 } }, |
| "bias": { "dtype": "float16", "shape": [2], "data": { "kind": "values", "values": [0.5, -0.75] } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "float16", |
| "shape": [1, 2, 1], |
| "data": { "kind": "values", "values": [0.5, -0.75] }, |
| "tolerance": 0 |
| } |
| } |
| }, |
| { |
| "name": "zero_batch_dim_3d_empty_output", |
| "attrs": {}, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [0, 1, 3, 3, 3] }, |
| "w": { "dtype": "float32", "shape": [1, 2, 3, 3, 3] } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [0, 2, 5, 5, 5] } } |
| }, |
| { |
| "name": "zero_batch_dim_grouped_empty_output", |
| "attrs": { "group": 2 }, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [0, 4, 4, 4] }, |
| "w": { "dtype": "float32", "shape": [4, 2, 2, 2] } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [0, 4, 5, 5] } } |
| }, |
| { |
| "name": "grouped_dispatch_fold_depthwise_1x1_over_16m", |
| "attrs": { "group": 64 }, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 64, 512, 512] }, |
| "w": { "dtype": "float32", "shape": [64, 1, 1, 1], "data": { "kind": "constant", "value": 1.0 } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 64, 512, 512] } } |
| }, |
| { |
| "name": "grouped_2d_f16_bias_routing_gap", |
| "attrs": { "group": 2, "strides": [2, 2], "pads": [1, 1, 1, 1] }, |
| "inputs": { |
| "x": { "dtype": "float16", "shape": [1, 4, 8, 8] }, |
| "w": { "dtype": "float16", "shape": [4, 3, 3, 3] }, |
| "bias": { "dtype": "float16", "shape": [6] } |
| }, |
| "outputs": { "y": { "dtype": "float16", "shape": [1, 6, 15, 15], "tolerance": 0.03 } } |
| }, |
| { |
| "name": "convtranspose3d_depth_output_padding1_compact", |
| "provenance": { |
| "source": "ONNX ConvTranspose-22 volumetric output_padding semantics", |
| "notes": "Covers a non-default depth entry in the exact output_padding list attribute." |
| }, |
| "attrs": { "strides": [2, 1, 1], "output_padding": [1, 0, 0] }, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 1, 2, 1, 1], "data": { "kind": "values", "values": [1.0, 2.0] } }, |
| "w": { "dtype": "float32", "shape": [1, 1, 2, 1, 1], "data": { "kind": "values", "values": [3.0, 4.0] } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 5, 1, 1], "tolerance": 0.000001 } } |
| }, |
| { |
| "name": "dispatch_cliff_batch_over_65535_bias_forces_nchw_scalar", |
| "provenance": { |
| "notes": "Batch 65536 exceeds maxComputeWorkgroupsPerDimension, so gemmDispatchFits is false and every col2im GEMM variant drops out; the scalar NCHW kernel with its bias epilogue is the only remaining f32 dense path." |
| }, |
| "attrs": {}, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [65536, 1, 1, 1], |
| "data": { "kind": "fillFloat32", "sinStep": 0.0009, "cosStep": 0.0007 } |
| }, |
| "w": { "dtype": "float32", "shape": [1, 1, 1, 1], "data": { "kind": "constant", "value": 1.25 } }, |
| "bias": { "dtype": "float32", "shape": [1], "data": { "kind": "constant", "value": 0.5 } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [65536, 1, 1, 1], "tolerance": 0.00001 } } |
| }, |
| { |
| "name": "dispatch_cliff_batch_over_65535_bias_f16_forces_nchw_scalar", |
| "provenance": { |
| "notes": "f16 companion of the batch dispatch cliff: with gemmDispatchFits false the tiled and subgroup-matrix col2im GEMMs are ineligible, and the stride-2 phase GEMM geometry does not apply, leaving the scalar f16 NCHW bias kernel." |
| }, |
| "attrs": {}, |
| "inputs": { |
| "x": { |
| "dtype": "float16", |
| "shape": [65536, 1, 1, 1], |
| "data": { "kind": "fillFloat32", "sinStep": 0.0009, "cosStep": 0.0007 } |
| }, |
| "w": { "dtype": "float16", "shape": [1, 1, 1, 1], "data": { "kind": "constant", "value": 1.25 } }, |
| "bias": { "dtype": "float16", "shape": [1], "data": { "kind": "constant", "value": 0.5 } } |
| }, |
| "outputs": { "y": { "dtype": "float16", "shape": [65536, 1, 1, 1], "tolerance": 0.002, "relTolerance": 0.01 } } |
| }, |
| { |
| "name": "f16_grouped2d_stride1_no_bias", |
| "provenance": { |
| "notes": "Grouped f16 ConvTranspose at stride 1: the grouped stride-phase kernel requires strideH/strideW >= 2, so unit stride is what routes a grouped f16 request to the scalar grouped NCHW kernel." |
| }, |
| "attrs": { "group": 2 }, |
| "inputs": { |
| "x": { |
| "dtype": "float16", |
| "shape": [1, 2, 2, 2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.17 } |
| }, |
| "w": { |
| "dtype": "float16", |
| "shape": [2, 1, 2, 2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.13 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float16", "shape": [1, 2, 3, 3], "tolerance": 0.01 } } |
| }, |
| { |
| "name": "f16_grouped2d_stride1_bias", |
| "provenance": { |
| "notes": "Bias companion of the unit-stride grouped f16 case: the grouped stride-phase bias kernel is gated on stride >= 2, so the bias epilogue of the scalar grouped f16 NCHW kernel is only reachable at stride 1." |
| }, |
| "attrs": { "group": 2 }, |
| "inputs": { |
| "x": { |
| "dtype": "float16", |
| "shape": [1, 2, 2, 2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.19 } |
| }, |
| "w": { |
| "dtype": "float16", |
| "shape": [2, 1, 2, 2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.11 } |
| }, |
| "bias": { |
| "dtype": "float16", |
| "shape": [2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.29 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float16", "shape": [1, 2, 3, 3], "tolerance": 0.01 } } |
| }, |
| { |
| "name": "convtranspose3d_subgroup_matrix_col2im_overlap_f32", |
| "provenance": { |
| "notes": "General rank-5 matrix-path coverage with K=IC=32, N=ID*IH*IW=64, and M=OC*KD*KH*KW=32. Constant operands make the complete 2x2x2 overlap multiplicity explicit while exercising weight reorder, subgroup-matrix contraction, and 3D col2im." |
| }, |
| "attrs": {}, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 32, 4, 4, 4], "data": { "kind": "constant", "value": 1.0 } }, |
| "w": { "dtype": "float32", "shape": [32, 4, 2, 2, 2], "data": { "kind": "constant", "value": 0.125 } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "float32", |
| "shape": [1, 4, 5, 5, 5], |
| "tolerance": 0.0002, |
| "relTolerance": 0.0002, |
| "data": { |
| "kind": "cycle", |
| "values": [4.0, 8.0, 8.0, 8.0, 4.0, 8.0, 16.0, 16.0, 16.0, 8.0, 8.0, 16.0, 16.0, 16.0, 8.0, 8.0, 16.0, 16.0, 16.0, 8.0, 4.0, 8.0, 8.0, 8.0, 4.0, 8.0, 16.0, 16.0, 16.0, 8.0, 16.0, 32.0, 32.0, 32.0, 16.0, 16.0, 32.0, 32.0, 32.0, 16.0, 16.0, 32.0, 32.0, 32.0, 16.0, 8.0, 16.0, 16.0, 16.0, 8.0, 8.0, 16.0, 16.0, 16.0, 8.0, 16.0, 32.0, 32.0, 32.0, 16.0, 16.0, 32.0, 32.0, 32.0, 16.0, 16.0, 32.0, 32.0, 32.0, 16.0, 8.0, 16.0, 16.0, 16.0, 8.0, 8.0, 16.0, 16.0, 16.0, 8.0, 16.0, 32.0, 32.0, 32.0, 16.0, 16.0, 32.0, 32.0, 32.0, 16.0, 16.0, 32.0, 32.0, 32.0, 16.0, 8.0, 16.0, 16.0, 16.0, 8.0, 4.0, 8.0, 8.0, 8.0, 4.0, 8.0, 16.0, 16.0, 16.0, 8.0, 8.0, 16.0, 16.0, 16.0, 8.0, 8.0, 16.0, 16.0, 16.0, 8.0, 4.0, 8.0, 8.0, 8.0, 4.0] |
| } |
| } |
| } |
| }, |
| { |
| "name": "convtranspose3d_subgroup_matrix_bias_f32", |
| "provenance": { |
| "notes": "Bias companion for the aligned rank-5 matrix path. A pointwise volumetric kernel isolates the bias epilogue while preserving context-derived M/K/N eligibility." |
| }, |
| "attrs": {}, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 32, 4, 4, 4], "data": { "kind": "constant", "value": 1.0 } }, |
| "w": { "dtype": "float32", "shape": [32, 32, 1, 1, 1], "data": { "kind": "constant", "value": 0.125 } }, |
| "bias": { "dtype": "float32", "shape": [32], "data": { "kind": "constant", "value": 0.5 } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "float32", |
| "shape": [1, 32, 4, 4, 4], |
| "tolerance": 0.0002, |
| "relTolerance": 0.0002, |
| "data": { "kind": "constant", "value": 4.5 } |
| } |
| } |
| }, |
| { |
| "name": "convtranspose3d_tiled_reg_large_spatial_f32", |
| "provenance": { |
| "notes": "Portable register-tiled rank-5 coverage with N=8*32*32 and M=32. Pointwise weights isolate the large matrix path and 3D tensor plumbing while tile eligibility remains manifest-derived." |
| }, |
| "attrs": {}, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 32, 8, 32, 32], "data": { "kind": "constant", "value": 1.0 } }, |
| "w": { "dtype": "float32", "shape": [32, 32, 1, 1, 1], "data": { "kind": "constant", "value": 0.03125 } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "float32", |
| "shape": [1, 32, 8, 32, 32], |
| "tolerance": 0.0002, |
| "relTolerance": 0.0002, |
| "data": { "kind": "constant", "value": 1.0 } |
| } |
| } |
| }, |
| { |
| "name": "convtranspose3d_tiled_bias_reg_large_spatial_f32", |
| "provenance": { |
| "notes": "Bias companion for the portable register-tiled rank-5 path, validating that bias stays in the output-stationary col2im epilogue rather than the intermediate GEMM." |
| }, |
| "attrs": {}, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 32, 8, 32, 32], "data": { "kind": "constant", "value": 1.0 } }, |
| "w": { "dtype": "float32", "shape": [32, 32, 1, 1, 1], "data": { "kind": "constant", "value": 0.03125 } }, |
| "bias": { "dtype": "float32", "shape": [32], "data": { "kind": "constant", "value": 0.5 } } |
| }, |
| "outputs": { |
| "y": { |
| "dtype": "float32", |
| "shape": [1, 32, 8, 32, 32], |
| "tolerance": 0.0002, |
| "relTolerance": 0.0002, |
| "data": { "kind": "constant", "value": 1.5 } |
| } |
| } |
| }, |
| { |
| "name": "convtranspose3d_implicit_sgmat_k3_pad1_f32", |
| "provenance": { |
| "notes": "Stride-1 k3 same-size decoder shape on the implicit forward-convolution route: tap-reversed weights, begin pads kernel-1-pad, K=IC*27=216 with a padded tail, and varying operand data so a gather or flip indexing error shows per position." |
| }, |
| "attrs": { "pads": [1, 1, 1, 1, 1, 1] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 8, 12, 12, 12], |
| "data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23, "scale": 0.5 } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [8, 32, 3, 3, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.29, "scale": 0.25 } |
| } |
| }, |
| "outputs": { |
| "y": { "dtype": "float32", "shape": [1, 32, 12, 12, 12], "tolerance": 0.0005, "relTolerance": 0.0005 } |
| } |
| }, |
| { |
| "name": "convtranspose3d_implicit_sgmat_k3_nopad_bias_f32", |
| "provenance": { |
| "notes": "Zero-pad stride-1 k3 growth shape with bias: the forward equivalence uses full begin pads of kernel-1 on every axis and the bias epilogue lands on directly stored output tiles." |
| }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 8, 10, 10, 10], |
| "data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23, "scale": 0.5 } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [8, 32, 3, 3, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.29, "scale": 0.25 } |
| }, |
| "bias": { "dtype": "float32", "shape": [32], "data": { "kind": "linspace", "start": -1.0, "end": 1.0 } } |
| }, |
| "outputs": { |
| "y": { "dtype": "float32", "shape": [1, 32, 12, 12, 12], "tolerance": 0.0005, "relTolerance": 0.0005 } |
| } |
| }, |
| { |
| "name": "convtranspose3d_implicit_sgmat_asym_pads_f32", |
| "provenance": { |
| "notes": "Asymmetric begin/end pads give each spatial axis a different forward begin pad (kernel-1-pad per axis), pinning the per-axis pad plumbing of the implicit route." |
| }, |
| "attrs": { "pads": [1, 0, 1, 0, 1, 0] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 8, 10, 10, 10], |
| "data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23, "scale": 0.5 } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [8, 32, 3, 3, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.29, "scale": 0.25 } |
| } |
| }, |
| "outputs": { |
| "y": { "dtype": "float32", "shape": [1, 32, 11, 11, 11], "tolerance": 0.0005, "relTolerance": 0.0005 } |
| } |
| }, |
| { |
| "name": "exact_tiling_stride4_kernel4_gemm_bias", |
| "provenance": { |
| "notes": "Kernel == stride with no padding, no dilation and no output padding: the taps TILE the output rather than overlapping it, so col2im takes its collapsed single-tap path instead of the KH*KW gather. Shaped after Depth Anything V2's factor-4 reassemble (x [1,384,37,49], w [384,48,4,4]). Without a case in this quadrant the collapsed branch had zero coverage: poisoning it left all 163 ConvTranspose tests green." |
| }, |
| "attrs": { "strides": [4, 4] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 16, 5, 7], |
| "data": { "kind": "fillFloat32", "sinStep": 0.03, "cosStep": 0.07, "scale": 0.4 } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [16, 8, 4, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.05, "cosStep": 0.11, "scale": 0.4 } |
| }, |
| "bias": { |
| "dtype": "float32", |
| "shape": [8], |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.19, "scale": 0.3 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 8, 20, 28], "tolerance": 0.0005 } } |
| }, |
| { |
| "name": "exact_tiling_nonsquare_stride2x3_no_bias", |
| "provenance": { |
| "notes": "Kernel == stride on BOTH axes but with different strides per axis (2 x 3), so a kh/kw or inW/outW swap in the collapsed col2im tap cannot cancel out the way it would on a square kernel." |
| }, |
| "attrs": { "strides": [2, 3] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 8, 4, 5], |
| "data": { "kind": "fillFloat32", "sinStep": 0.023, "cosStep": 0.061, "scale": 0.4 } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [8, 6, 2, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.047, "cosStep": 0.089, "scale": 0.4 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 6, 8, 15], "tolerance": 0.0005 } } |
| }, |
| { |
| "name": "exact_tiling_stride2_kernel2_f16_bias", |
| "provenance": { |
| "notes": "The f16 im2col-GEMM family shares the same col2im shader, so the collapsed tap needs a case on that side of the dtype split too. Shaped after Depth Anything V2's factor-2 reassemble." |
| }, |
| "attrs": { "strides": [2, 2] }, |
| "inputs": { |
| "x": { |
| "dtype": "float16", |
| "shape": [1, 32, 8, 8], |
| "data": { "kind": "fillFloat32", "sinStep": 0.03, "cosStep": 0.07, "scale": 0.4 } |
| }, |
| "w": { |
| "dtype": "float16", |
| "shape": [32, 16, 2, 2], |
| "data": { "kind": "fillFloat32", "sinStep": 0.05, "cosStep": 0.11, "scale": 0.4 } |
| }, |
| "bias": { |
| "dtype": "float16", |
| "shape": [16], |
| "data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.19, "scale": 0.3 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float16", "shape": [1, 16, 16, 16], "tolerance": 0.03 } } |
| }, |
| { |
| "name": "cols_gemm_2d_bias_m_and_n_tail", |
| "provenance": { |
| "notes": "An f32 rank-4 im2col-GEMM whose channel count is a multiple of 32 and whose BOTH gemm axes are ragged: gemmM = 12*3*3 = 108 tails a 32-row tile and gemmN = 9*11 = 99 tails a 64-column tile. Written to cover a subgroup-matrix 2D path that was then reverted, and kept because it is the shape that CAUGHT it: the shared sgmat kernel's materialized B load has no N guard, so this case read maxAbs 6.6 wrong while the same shape at N = 64 was exact." |
| }, |
| "attrs": { "strides": [2, 2], "pads": [1, 1, 1, 1] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 32, 9, 11], |
| "data": { "kind": "fillFloat32", "sinStep": 0.031, "cosStep": 0.067, "scale": 0.4 } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [32, 12, 3, 3], |
| "data": { "kind": "fillFloat32", "sinStep": 0.053, "cosStep": 0.089, "scale": 0.4 } |
| }, |
| "bias": { |
| "dtype": "float32", |
| "shape": [12], |
| "data": { "kind": "fillFloat32", "sinStep": 0.131, "cosStep": 0.197, "scale": 0.3 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 12, 17, 21], "tolerance": 0.0005 } } |
| }, |
| { |
| "name": "cols_gemm_2d_no_bias_m_aligned_n_below_tile", |
| "provenance": { |
| "notes": "The companion: gemmM = 16*4*4 = 256 is tile-aligned and gemmN = 5*6 = 30 is BELOW one column tile, the narrowest an N tail gets. Same provenance — it is half of the pair that showed a ragged N is not safe on the shared subgroup-matrix kernel." |
| }, |
| "attrs": { "strides": [4, 4] }, |
| "inputs": { |
| "x": { |
| "dtype": "float32", |
| "shape": [1, 64, 5, 6], |
| "data": { "kind": "fillFloat32", "sinStep": 0.023, "cosStep": 0.061, "scale": 0.4 } |
| }, |
| "w": { |
| "dtype": "float32", |
| "shape": [64, 16, 4, 4], |
| "data": { "kind": "fillFloat32", "sinStep": 0.047, "cosStep": 0.083, "scale": 0.4 } |
| } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 16, 20, 24], "tolerance": 0.0005 } } |
| }, |
| { |
| "name": "f16_1d_bias", |
| "provenance": { |
| "notes": "Covers rank-3 f16 ConvTranspose with bias. Exact half-valued inputs keep bias-indexing errors observable without f16 rounding ambiguity." |
| }, |
| "attrs": {}, |
| "inputs": { |
| "x": { |
| "dtype": "float16", |
| "shape": [1, 2, 8], |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/f16_1d_nobias_input_x" } } |
| }, |
| "w": { |
| "dtype": "float16", |
| "shape": [2, 3, 3], |
| "data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/f16_1d_nobias_input_w" } } |
| }, |
| "bias": { "dtype": "float16", "shape": [3], "data": { "kind": "values", "values": [0.25, -0.5, 1.5] } } |
| }, |
| "outputs": { "y": { "dtype": "float16", "shape": [1, 3, 10], "tolerance": 0.02 } } |
| }, |
| { |
| "name": "f16_1d_grouped_nobias", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_1D_OutputShape_1_group_2_for_transpose_path", |
| "notes": "Covers grouped rank-3 f16 ConvTranspose without bias. Distinct per-group weights 2 and 3 make group-indexing errors observable." |
| }, |
| "attrs": { "group": 2 }, |
| "inputs": { |
| "x": { "dtype": "float16", "shape": [1, 2, 2], "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0] } }, |
| "w": { "dtype": "float16", "shape": [2, 1, 1], "data": { "kind": "values", "values": [2.0, 3.0] } } |
| }, |
| "outputs": { "y": { "dtype": "float16", "shape": [1, 2, 2], "tolerance": 0.01 } } |
| }, |
| { |
| "name": "f16_1d_grouped_bias", |
| "provenance": { |
| "source": "onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc", |
| "test": "ConvTransposeTest.ConvTranspose_1D_OutputShape_1_group_2_for_transpose_path", |
| "notes": "Covers grouped rank-3 f16 ConvTranspose with per-output-channel bias. The two bias entries differ in sign and magnitude, making a wrong channel index observable." |
| }, |
| "attrs": { "group": 2 }, |
| "inputs": { |
| "x": { "dtype": "float16", "shape": [1, 2, 2], "data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0] } }, |
| "w": { "dtype": "float16", "shape": [2, 1, 1], "data": { "kind": "values", "values": [2.0, 3.0] } }, |
| "bias": { "dtype": "float16", "shape": [2], "data": { "kind": "values", "values": [0.25, -0.5] } } |
| }, |
| "outputs": { "y": { "dtype": "float16", "shape": [1, 2, 2], "tolerance": 0.01 } } |
| }, |
| { |
| "name": "zero_input_spatial_dim_3d_empty_output", |
| "provenance": { |
| "notes": "A zero input-depth dimension with a unit kernel produces a zero output-depth dimension. This exercises the direct rank-5 fallback when the GEMM column dimension is zero and the nonempty-output reduction does not apply." |
| }, |
| "attrs": {}, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 1, 0, 2, 2], "data": { "kind": "values", "values": [] } }, |
| "w": { "dtype": "float32", "shape": [1, 1, 1, 1, 1], "data": { "kind": "values", "values": [2.0] } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 0, 2, 2], "tolerance": 0 } } |
| }, |
| { |
| "name": "zero_input_spatial_dim_3d_empty_output_bias", |
| "provenance": { |
| "notes": "Bias does not make an output tensor with a zero spatial dimension nonempty. This is the bias-bearing sibling for the direct rank-5 zero-column fallback." |
| }, |
| "attrs": {}, |
| "inputs": { |
| "x": { "dtype": "float32", "shape": [1, 1, 0, 2, 2], "data": { "kind": "values", "values": [] } }, |
| "w": { "dtype": "float32", "shape": [1, 1, 1, 1, 1], "data": { "kind": "values", "values": [2.0] } }, |
| "bias": { "dtype": "float32", "shape": [1], "data": { "kind": "values", "values": [0.75] } } |
| }, |
| "outputs": { "y": { "dtype": "float32", "shape": [1, 1, 0, 2, 2], "tolerance": 0 } } |
| } |
| ] |
| } |
|
|