ReduceMean + resnet
Validate Operations / validate-operations (push) Has been cancelled

This commit is contained in:
ilgeco
2026-06-10 14:30:10 +02:00
parent 237654dadf
commit 852bef7605
12 changed files with 199 additions and 10 deletions
+93
View File
@@ -1053,6 +1053,92 @@ def reducemean_large_dimension_1024():
save_model(model, "reduce_mean/large_dimension_1024", "reduce_mean_large_dimension_1024.onnx")
def make_legacy_reducemean_model(name, shape, output_shape, directory, filename, *, axes, keepdims=1,
noop_with_empty_axes=0):
"""Create an opset-18 ReduceMean model that lowers to ONNXReduceMeanOp."""
X = helper.make_tensor_value_info("X", TensorProto.FLOAT, shape)
Y = helper.make_tensor_value_info("Y", TensorProto.FLOAT, output_shape)
initializers = []
node_inputs = ["X", ""]
if axes is not None:
initializers.append(make_int64_initializer("axes", axes))
node_inputs = ["X", "axes"]
node = helper.make_node("ReduceMean", node_inputs, ["Y"],
keepdims=keepdims, noop_with_empty_axes=noop_with_empty_axes)
graph = helper.make_graph([node], name, [X], [Y], initializer=initializers)
model = helper.make_model(graph, opset_imports=[helper.make_opsetid("", 18)])
save_model(model, directory, filename)
def reducemean_legacy_axis1_keepdims_1():
"""Opset-18 ReduceMean over one positive axis, preserving rank."""
make_legacy_reducemean_model("reducemean_legacy_axis1_keepdims_1",
[2, 3, 4], [2, 1, 4],
"reduce_mean/legacy_axis1_keepdims_1",
"reduce_mean_legacy_axis1_keepdims_1.onnx",
axes=[1], keepdims=1)
def reducemean_legacy_axis1_keepdims_0():
"""Opset-18 ReduceMean over one positive axis, dropping the reduced axis."""
make_legacy_reducemean_model("reducemean_legacy_axis1_keepdims_0",
[2, 3, 4], [2, 4],
"reduce_mean/legacy_axis1_keepdims_0",
"reduce_mean_legacy_axis1_keepdims_0.onnx",
axes=[1], keepdims=0)
def reducemean_legacy_axes_1_2_keepdims_1():
"""Opset-18 ReduceMean over multiple positive axes."""
make_legacy_reducemean_model("reducemean_legacy_axes_1_2_keepdims_1",
[2, 3, 4], [2, 1, 1],
"reduce_mean/legacy_axes_1_2_keepdims_1",
"reduce_mean_legacy_axes_1_2_keepdims_1.onnx",
axes=[1, 2], keepdims=1)
def reducemean_legacy_negative_axis():
"""Opset-18 ReduceMean using a negative axis."""
make_legacy_reducemean_model("reducemean_legacy_negative_axis",
[2, 3, 4], [2, 3, 1],
"reduce_mean/legacy_negative_axis",
"reduce_mean_legacy_negative_axis.onnx",
axes=[-1], keepdims=1)
def reducemean_legacy_reduce_all_keepdims_1():
"""Opset-18 ReduceMean over all axes with the optional axes input omitted."""
make_legacy_reducemean_model("reducemean_legacy_reduce_all_keepdims_1",
[2, 3, 4], [1, 1, 1],
"reduce_mean/legacy_reduce_all_keepdims_1",
"reduce_mean_legacy_reduce_all_keepdims_1.onnx",
axes=None, keepdims=1)
def reducemean_legacy_empty_axes_noop():
"""Opset-18 ReduceMean with empty axes and noop_with_empty_axes enabled."""
X = helper.make_tensor_value_info("X", TensorProto.FLOAT, [3, 4])
Y = helper.make_tensor_value_info("Y", TensorProto.FLOAT, [3, 4])
axes = make_int64_initializer("axes", [])
reduce = helper.make_node("ReduceMean", ["X", "axes"], ["R"],
keepdims=1, noop_with_empty_axes=1)
relu = helper.make_node("Relu", ["R"], ["Y"])
graph = helper.make_graph([reduce, relu], "reducemean_legacy_empty_axes_noop", [X], [Y], initializer=[axes])
model = helper.make_model(graph, opset_imports=[helper.make_opsetid("", 18)])
save_model(model, "reduce_mean/legacy_empty_axes_noop", "reduce_mean_legacy_empty_axes_noop.onnx")
def reducemean_legacy_nchw_spatial():
"""Opset-18 ReduceMean over H and W on an NCHW tensor."""
make_legacy_reducemean_model("reducemean_legacy_nchw_spatial",
[1, 3, 5, 5], [1, 3, 1, 1],
"reduce_mean/legacy_nchw_spatial",
"reduce_mean_legacy_nchw_spatial.onnx",
axes=[2, 3], keepdims=1)
# ---------------------------------------------------------------------------
# Relu tests
# ---------------------------------------------------------------------------
@@ -1974,6 +2060,13 @@ if __name__ == "__main__":
reducemean_4d_spatial_keepdims_0()
reducemean_channel_axis_nchw()
reducemean_large_dimension_1024()
reducemean_legacy_axis1_keepdims_1()
reducemean_legacy_axis1_keepdims_0()
reducemean_legacy_axes_1_2_keepdims_1()
reducemean_legacy_negative_axis()
reducemean_legacy_reduce_all_keepdims_1()
reducemean_legacy_empty_axes_noop()
reducemean_legacy_nchw_spatial()
print("\nGenerating Relu tests:")
relu_basic()