Xenova's picture
Xenova HF Staff
sync 2e7068faf55e
386747d verified
Raw
History Blame
23.1 kB
{
"op": "ai.onnx.MeanVarianceNormalization",
"fixtureArrays": {
"ort_axes_subset_rank5_0_2_4_input_x": [0.6369617, 0.2697867, 0.0409735, 0.0165276, 0.8132702, 0.9127556, 0.6066358, 0.7294966, 0.543625, 0.9350724, 0.8158536, 0.0027385, 0.8574043, 0.0335856, 0.7296554, 0.1756556, 0.8631789, 0.5414612, 0.2997119, 0.4226872, 0.0283197, 0.1242833, 0.6706244, 0.6471895, 0.6153851, 0.3836776, 0.9972099, 0.9808353, 0.685542, 0.6504593, 0.6884467, 0.3889214]
},
"cases": [
{
"name": "rank5_serial_rows_channel_axis_f32",
"provenance": {
"notes": "Exercises the coalesced serial-row path for a realistic channel-only reduction with many independent spatial groups."
},
"attrs": { "axes": [1] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 32, 8, 8, 4],
"data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.031, "scale": 0.5 }
}
},
"outputs": {
"y": { "dtype": "float32", "shape": [2, 32, 8, 8, 4], "tolerance": 0.00002, "relTolerance": 0.00002 }
}
},
{
"name": "vec4_reduced_suffix_w6_hw12_f32",
"provenance": {
"notes": "The innermost dimension is not vec4-aligned, but the contiguous reduced HxW suffix is; vectors may safely cross an H/W boundary."
},
"attrs": { "axes": [0, 2, 3] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 3, 2, 6],
"data": { "kind": "fillFloat32", "sinStep": 0.071, "cosStep": 0.113, "scale": 0.5 }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [2, 3, 2, 6], "tolerance": 0.00002, "relTolerance": 0.00002 } }
},
{
"name": "dispatch_cliff_rank3_over_16m_elements",
"attrs": { "axes": [2] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [8388608, 1, 2],
"data": { "kind": "cycle", "values": [0.1, 0.9, 0.3, 0.7] }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [8388608, 1, 2], "tolerance": 0.002 } }
},
{
"name": "subgroup_default_axes_r768",
"attrs": { "axes": [0, 2, 3] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 8, 16, 24],
"data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.21 }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [2, 8, 16, 24] } }
},
{
"name": "subgroup_keep_inner_axes_0_1",
"attrs": { "axes": [0, 1] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [4, 8, 6, 10],
"data": { "kind": "fillFloat32", "sinStep": 0.29, "cosStep": 0.11 }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [4, 8, 6, 10] } }
},
{
"name": "subgroup_rank3_axes_0_1_r300",
"attrs": { "axes": [0, 1] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [10, 30, 3],
"data": { "kind": "fillFloat32", "sinStep": 0.07, "cosStep": 0.19 }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [10, 30, 3] } }
},
{
"name": "ort_gen_rank3_axes_0_2",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/gen_mvn_test_data.py",
"test": "shape [2, 3, 2] reduced over axes [0, 2]",
"notes": "Small deterministic generator case with a non-contiguous reduction axis set."
},
"attrs": { "axes": [0, 2] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 3, 2],
"data": {
"kind": "values",
"values": [0.6369617, 0.2697867, 0.0409735, 0.0165276, 0.8132702, 0.9127556, 0.6066358, 0.7294966, 0.543625, 0.9350724, 0.8158536, 0.0027385]
}
}
},
"outputs": {
"y": {
"dtype": "float32",
"shape": [2, 3, 2],
"tolerance": 0.00001,
"data": {
"kind": "values",
"values": [0.438269436, -1.67241299, -0.899517715, -0.963612974, 0.48143062, 0.751848817, 0.263942957, 0.970200479, 0.418393701, 1.44473696, 0.488452703, -1.72173214]
}
}
}
},
{
"name": "f32_tiny_variance_axis2_gpu_gap",
"skipGpu": {
"category": "permanent",
"reason": "Portable WGSL floating-point semantics do not guarantee preservation of the subnormal values required by this fixture. Backend evidence: WebGPU/Metal flushes subnormals to zero in f32; the subnormal reduced-axis variance collapses to zero so normalization yields Infinity."
},
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/mean_variance_normalization_test.cc",
"test": "MeanVarianceNormalizationTest.DefaultAxes",
"notes": "Valid finite inputs with a positive subnormal variance along the reduced axis; output should be finite instead of +/-Infinity."
},
"attrs": { "axes": [2] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 1, 2],
"data": { "kind": "values", "values": [1e-20, -1e-20, 2e-20, -2e-20] }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [2, 1, 2], "tolerance": 0.00001 } }
},
{
"name": "f32_tiny_variance_default_axes_rank4_gpu_gap",
"skipGpu": {
"category": "permanent",
"reason": "Portable WGSL floating-point semantics do not guarantee preservation of the subnormal values required by this fixture. Backend evidence: WebGPU/Metal flushes subnormals to zero in f32; the subnormal reduced variance collapses to zero so normalization is non-finite (rank-4)."
},
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/mean_variance_normalization_test.cc",
"test": "MeanVarianceNormalizationTest.DefaultAxes",
"notes": "Rank-4 default/spatial axes companion: the variance is positive but subnormal, so the normalized output should be finite."
},
"attrs": { "axes": [0, 2, 3] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [1, 1, 2, 2],
"data": { "kind": "values", "values": [1e-20, -1e-20, 2e-20, -2e-20] }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 1, 2, 2], "tolerance": 0.00001 } }
},
{
"name": "f32_tiny_variance_default_axes_rank5_gpu_gap",
"skipGpu": {
"category": "permanent",
"reason": "Portable WGSL floating-point semantics do not guarantee preservation of the subnormal values required by this fixture. Backend evidence: WebGPU/Metal flushes subnormals to zero in f32; the subnormal reduced variance collapses to zero so normalization is non-finite (rank-5)."
},
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/mean_variance_normalization_test.cc",
"test": "MeanVarianceNormalizationTest.DefaultAxes",
"notes": "Rank-5 companion: the reduced variance is positive but subnormal, so normalization should produce finite values."
},
"attrs": { "axes": [0, 2, 3, 4] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [1, 1, 1, 2, 2],
"data": { "kind": "values", "values": [1e-20, -1e-20, 2e-20, -2e-20] }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 1, 1, 2, 2], "tolerance": 0.00001 } }
},
{
"name": "subgroup_large_offset_cancellation",
"attrs": { "axes": [0, 2, 3] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [1, 2, 2, 4],
"data": {
"kind": "values",
"values": [4000.25, 4001.5, 3999.75, 4000.875, 4001.125, 3998.5, 4000.0, 4002.25, -2000.5, -2001.25, -1999.875, -2000.125, -2002.0, -1998.75, -2000.625, -2001.5]
}
}
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 2, 2, 4] } }
},
{
"name": "default_axes_f32",
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 2, 1, 2],
"data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [2, 2, 1, 2] } },
"tolerance": 0.00001
},
{
"name": "spatial_axes_f16",
"attrs": { "axes": [2, 3] },
"inputs": {
"x": {
"dtype": "float16",
"shape": [1, 2, 2, 2],
"data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] }
}
},
"outputs": { "y": { "dtype": "float16", "shape": [1, 2, 2, 2] } },
"tolerance": 0.002
},
{
"name": "channel_axis_only_f32",
"attrs": { "axes": [1] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [1, 3, 2, 2],
"data": { "kind": "values", "values": [1.0, 2.0, 3.0, 4.0, 4.0, 6.0, 8.0, 10.0, -1.0, -2.0, -3.0, -4.0] }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 3, 2, 2], "tolerance": 0.00001 } }
},
{
"name": "channel_axis_no_subgroup_wg64_tail65_f32",
"provenance": {
"notes": "Locks the 65-value channel reduction where the portable reduction uses 64 fully occupied lanes plus one tail value instead of a half-empty 128-lane tree."
},
"attrs": { "axes": [1] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [1, 65, 2, 2],
"data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.031, "scale": 0.5 }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 65, 2, 2], "tolerance": 0.00002, "relTolerance": 0.00002 } }
},
{
"name": "negative_spatial_axes_f32",
"attrs": { "axes": [-2, -1] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [1, 2, 2, 3],
"data": { "kind": "values", "values": [1.0, 2.0, 4.0, 8.0, 16.0, 32.0, -1.0, -2.0, -4.0, -8.0, -16.0, -32.0] }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 2, 2, 3], "tolerance": 0.00001 } }
},
{
"name": "f32_spatial_axes_2x8x32x32",
"provenance": {
"notes": "Compact sibling for the spatial-axes MVN benchmark; preserves axes=[2,3] over many channel planes without benchmark-scale tensors."
},
"attrs": { "axes": [2, 3] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 8, 32, 32],
"data": { "kind": "fillFloat32", "sinStep": 0.011, "cosStep": 0.017, "scale": 0.5 }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [2, 8, 32, 32], "tolerance": 0.00001, "relTolerance": 0.00001 } }
},
{
"name": "all_axes_f32",
"attrs": { "axes": [0, 1, 2, 3] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [1, 2, 2, 2],
"data": { "kind": "values", "values": [-4.0, -2.0, -1.0, 0.0, 1.0, 2.0, 4.0, 8.0] }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 2, 2, 2], "tolerance": 0.00001 } }
},
{
"name": "all_axes_zero_variance_nan",
"attrs": { "axes": [0, 1, 2, 3] },
"inputs": { "x": { "dtype": "float32", "shape": [1, 2, 2, 2], "data": { "kind": "constant", "value": 7.0 } } },
"outputs": { "y": { "dtype": "float32", "shape": [1, 2, 2, 2], "tolerance": 0, "allowNaN": true } }
},
{
"name": "ort_all_axes_rank3",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/mean_variance_normalization_test.cc",
"test": "MeanVarianceNormalizationTest.AllAxes",
"notes": "Covers ORT's rank-3 all-axes shape using the same deterministic value pattern."
},
"attrs": { "axes": [0, 1, 2] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 2, 4],
"data": {
"kind": "values",
"values": [-5.0, -4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, -5.0, -4.0, -3.0, -2.0, -1.0]
}
}
},
"outputs": { "y": { "dtype": "float32", "shape": [2, 2, 4], "tolerance": 0.00001 } }
},
{
"name": "ort_default_axes_rank4_two_batches",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/mean_variance_normalization_test.cc",
"test": "MeanVarianceNormalizationTest.DefaultAxes"
},
"attrs": { "axes": [0, 2, 3] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 2, 2, 3],
"data": {
"kind": "values",
"values": [3.0, -3.0, -1.0, 1.0, 2.0, -1.0, -2.0, -2.0, -2.0, 4.0, 1.0, 4.0, 0.0, -2.0, -2.0, -4.0, 5.0, 7.0, 5.0, -5.0, -5.0, 3.0, 4.0, 4.0]
}
}
},
"outputs": { "y": { "dtype": "float32", "shape": [2, 2, 2, 3], "tolerance": 0.00001 } }
},
{
"name": "ort_all_axes_rank4_two_batches",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/mean_variance_normalization_test.cc",
"test": "MeanVarianceNormalizationTest.AllAxes",
"notes": "Uses ORT's rank-4 all-axes shape with deterministic nonconstant values."
},
"attrs": { "axes": [0, 1, 2, 3] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 2, 2, 3],
"data": {
"kind": "values",
"values": [-5.0, -4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, -5.0, -4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, -5.0, -4.0]
}
}
},
"outputs": { "y": { "dtype": "float32", "shape": [2, 2, 2, 3], "tolerance": 0.00001 } }
},
{
"name": "ort_axes_subset_rank5_0_2_4",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/mean_variance_normalization_test.cc",
"test": "MeanVarianceNormalizationTest.AxesSubsets5D"
},
"attrs": { "axes": [0, 2, 4] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 2, 2, 2, 2],
"data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/ort_axes_subset_rank5_0_2_4_input_x" } }
}
},
"outputs": {
"y": {
"dtype": "float32",
"shape": [2, 2, 2, 2, 2],
"tolerance": 0.00002,
"data": {
"kind": "values",
"values": [0.3508345, -0.7870349, -1.4605863, -1.5525494, 0.8972119, 1.2055154, 0.6673803, 1.1295706, -0.168333, 1.3134559, 0.6321192, -1.7208749, 1.0194501, -2.0990413, 0.3826789, -1.220487, 1.0518781, 0.0548801, -0.4872377, -0.0246164, -1.5353374, -1.2379477, 0.9080993, 0.8199395, 0.1033084, -0.7737996, 1.1569287, 1.1095439, 0.3688809, 0.2360785, 0.2634291, -0.6033379]
}
}
}
},
{
"name": "ort_axes_subset_rank5_1_2_3",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/mean_variance_normalization_test.cc",
"test": "MeanVarianceNormalizationTest.AxesSubsets5D"
},
"attrs": { "axes": [1, 2, 3] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 2, 2, 2, 2],
"data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/ort_axes_subset_rank5_0_2_4_input_x" } }
}
},
"outputs": {
"y": {
"dtype": "float32",
"shape": [2, 2, 2, 2, 2],
"tolerance": 0.00002,
"data": {
"kind": "values",
"values": [0.0260567, -0.3008327, -2.3950341, -0.9652744, 0.7422773, 1.3860379, -0.0971367, 0.905246, -0.3531062, 1.4445876, 0.7527716, -1.001451, 0.9215636, -0.9205217, 0.4026078, -0.5477917, 0.8924309, 0.1015335, -1.0632416, -0.4004898, -2.0051854, -1.6617567, 0.2241158, 0.5484163, 0.0323921, -0.5653723, 1.3576236, 1.9586404, 0.2758914, 0.5622366, 0.2859732, -0.543208]
}
}
}
},
{
"name": "ort_axes_subset_rank5_0_1_4",
"provenance": {
"source": "onnxruntime/test/providers/cpu/tensor/mean_variance_normalization_test.cc",
"test": "MeanVarianceNormalizationTest.AxesSubsets5D"
},
"attrs": { "axes": [0, 1, 4] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 2, 2, 2, 2],
"data": { "kind": "values", "values": { "$ref": "#/fixtureArrays/ort_axes_subset_rank5_0_2_4_input_x" } }
}
},
"outputs": {
"y": {
"dtype": "float32",
"shape": [2, 2, 2, 2, 2],
"tolerance": 0.00002,
"data": {
"kind": "values",
"values": [0.1843672, -1.5822912, -1.0098907, -1.0706838, 0.8350127, 1.1118552, 0.1472972, 0.8161319, -0.2647213, 1.6187237, 0.9171133, -1.1049752, 0.9578265, -1.3346525, 0.8169968, -2.1988905, 1.2728089, -0.2751323, -0.3664493, -0.0606291, -1.3493062, -1.0822638, 0.4956413, 0.3680653, 0.0805517, -1.0343067, 1.3681179, 1.3273969, 0.4795772, 0.3819509, 0.5926631, -1.0379052]
}
}
}
},
{
"name": "onnx_backend_mvn",
"provenance": { "source": "cmake/external/onnx/onnx/backend/test/data/node/test_mvn" },
"attrs": { "axes": [0, 2, 3] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [3, 3, 3, 1],
"data": {
"kind": "values",
"values": [0.8439682722091675, 0.5665143728256226, 0.058367349207401276, 0.029163669794797897, 0.12964272499084473, 0.5060197114944458, 0.7953830361366272, 0.9411345720291138, 0.9546573162078857, 0.17730942368507385, 0.46192094683647156, 0.264804482460022, 0.6746842265129089, 0.01665256917476654, 0.6247307658195496, 0.9240844249725342, 0.9722340703010559, 0.1196569874882698, 0.41356155276298523, 0.9129372835159302, 0.5933007597923279, 0.8192993402481079, 0.7862604260444641, 0.11799798905849457, 0.692484438419342, 0.5411941409111023, 0.07513222843408585]
}
}
},
"outputs": { "y": { "dtype": "float32", "shape": [3, 3, 3, 1], "tolerance": 0.00002 } }
},
{
"name": "empty_input_zero_dim",
"attrs": { "axes": [0, 2, 3] },
"inputs": { "x": { "dtype": "float32", "shape": [0, 8, 16, 24], "data": { "kind": "values", "values": [] } } },
"outputs": { "y": { "dtype": "float32", "shape": [0, 8, 16, 24], "tolerance": 0 } }
},
{
"name": "f32_vec4_reduce_innermost_only",
"attrs": { "axes": [3] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 3, 4, 16],
"data": { "kind": "fillFloat32", "sinStep": 0.11, "cosStep": 0.23, "scale": 0.5 }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [2, 3, 4, 16], "tolerance": 0.00002 } }
},
{
"name": "vec4_dispatch_fold_over_65535_rows_axis3",
"attrs": { "axes": [3] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [70000, 1, 1, 8],
"data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.031, "scale": 0.5 }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [70000, 1, 1, 8], "tolerance": 0.0002 } }
},
{
"name": "reduce_size1_axis_zero_variance_nan_rank4",
"attrs": { "axes": [2] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 2, 1, 2],
"data": { "kind": "values", "values": [1.0, -3.0, 2.5, 100.0, -7.0, 0.0, 42.0, -0.5] }
}
},
"outputs": {
"y": {
"dtype": "float32",
"shape": [2, 2, 1, 2],
"tolerance": 0,
"allowNaN": true,
"data": { "kind": "values", "values": ["NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"] }
}
}
},
{
"name": "vec4_negative_innermost_axis_axis_minus1",
"attrs": { "axes": [-1] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [2, 3, 5, 8],
"data": { "kind": "fillFloat32", "sinStep": 0.19, "cosStep": 0.07, "scale": 0.5 }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [2, 3, 5, 8], "tolerance": 0.00002 } }
},
{
"name": "kept_channel_dim_zero_empty_rank4",
"attrs": { "axes": [0, 2, 3] },
"inputs": { "x": { "dtype": "float32", "shape": [2, 0, 16, 24], "data": { "kind": "values", "values": [] } } },
"outputs": { "y": { "dtype": "float32", "shape": [2, 0, 16, 24], "tolerance": 0 } }
},
{
"name": "all_axes_flat_splitk_65536",
"attrs": { "axes": [0, 1, 2, 3] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [1, 1, 256, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.5 }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 1, 256, 256], "tolerance": 0.0002 } }
},
{
"name": "all_axes_flat_split_f16_65536",
"provenance": {
"notes": "Locks the widened-f32 split-reduction path for large f16 tensors; scratch stays f32 while input/output storage remains f16."
},
"attrs": { "axes": [0, 1, 2, 3] },
"inputs": {
"x": {
"dtype": "float16",
"shape": [1, 1, 256, 256],
"data": { "kind": "fillFloat32", "sinStep": 0.013, "cosStep": 0.027, "scale": 0.5 }
}
},
"outputs": { "y": { "dtype": "float16", "shape": [1, 1, 256, 256], "tolerance": 0.004, "relTolerance": 0.004 } }
},
{
"name": "rank6_channel_axis_generic_geometry",
"attrs": { "axes": [1] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [1, 4, 1, 2, 1, 2],
"data": { "kind": "fillFloat32", "sinStep": 0.17, "cosStep": 0.29, "scale": 2.0 }
}
},
"outputs": {
"y": { "dtype": "float32", "shape": [1, 4, 1, 2, 1, 2], "tolerance": 0.00002, "relTolerance": 0.00002 }
}
},
{
"name": "rank8_channel_axis_generic_geometry",
"attrs": { "axes": [1] },
"inputs": {
"x": {
"dtype": "float32",
"shape": [1, 4, 1, 2, 1, 2, 2, 2],
"data": { "kind": "fillFloat32", "sinStep": 0.13, "cosStep": 0.27 }
}
},
"outputs": { "y": { "dtype": "float32", "shape": [1, 4, 1, 2, 1, 2, 2, 2], "tolerance": 0.00002 } }
},
{
"name": "rank5_serial_rows_channel_axis_f16",
"provenance": {
"notes": "float16 on the coalesced serial-row route, which needs at least SERIAL_MIN_ROWS independent rows and a reduction within SERIAL_MAX_REDUCTION. Only f32 cases and a bench had reached it."
},
"attrs": { "axes": [1] },
"inputs": {
"x": {
"dtype": "float16",
"shape": [2, 32, 8, 8, 4],
"data": { "kind": "fillFloat32", "sinStep": 0.017, "cosStep": 0.031, "scale": 0.5 }
}
},
"outputs": { "y": { "dtype": "float16", "shape": [2, 32, 8, 8, 4], "tolerance": 0.02 } }
}
]
}