BatchNormalization layer with training_mode=1 results in incorrect ONNX model
Los mantenedores suelen responder en 3 días
@justinchuby ya está trabajando en esto.
Desde el 4/8/2026.
- #2988 de @copilot-swe-agent — cerrado sin fusionar
Evaluación
Este issue todavía no se ha evaluado.
Descripción
converting the attached ONNX model with the following script:
from onnxscript import ir
from onnxscript.optimizer import optimize
ir_model = ir.load("input.onnx")
optimized_model = optimize(ir_model)
ir.save(optimized_model, "output.onnx")
generates an ONNX model that does not abide by the ONNX spec.
BatchNormalization layer "/bn1/BatchNormalization" has training_mode=1 set. It has 3 outputs, but the last two are not used. Because they are unused, https://github.com/onnx/ir-py/blob/v0.2.1/src/onnx_ir/passes/common/unused_removal.py#L46-L50 clears the output names and training_mode attribute. While I don't like the notion of unnamed outputs to mean unused, it is an accepted way in ONNX. Later on during optimization, at https://github.com/microsoft/onnxscript/blob/v0.7.0/onnxscript/optimizer/_optimizer.py#L68, new names get reassigned to these outputs, resulting in the following graph snippet:
This graph now has a BatchNormaliztion node, with training_mode=0, with 3 outputs. This is incorrect per spec: "When training_mode=False, extra outputs are invalid." in https://onnx.ai/onnx/operators/onnx__BatchNormalization.html#batchnormalization-15.
I filed this bug with onnxscript, even though the name-clearing happens in onnx-ir.
relevant versions:
onnx 1.21.0
onnx-ir 0.2.1
onnxscript 0.7.1
- Lenguaje dominante
- Python
- Estrellas
- 457
- Forks
- 149
- Merge medio
- 3 d 19 h
- PR fusionados (30 d)
- 23
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de microsoft/onnxscript
-
[torchlib] log2 and log10 lose float64 precisionPosiblemente ocupada @Syedmudassir1604 la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
microsoft/onnxscript#3143 ·
Los mantenedores suelen responder en 3 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
microsoft/onnxscript#3003 · 3 comentarios ·
Los mantenedores suelen responder en 3 días
-
CI : Pin github actions to full commit SHAPosiblemente ocupada @Aniketsy la tomó hace 182 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
microsoft/onnxscript#2903 · 6 comentarios ·
Los mantenedores suelen responder en 3 días
-
optimize() crashes when constant folding produces a string tensorPosiblemente ocupada @nniiovoo la tomó hace 7 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
microsoft/onnxscript#3129 ·
Los mantenedores suelen responder en 3 días
-
bug module: torchlib
Dificultad 3/5 1-2 días Aptitud para principiantes 64/100
microsoft/onnxscript#3124 · 3 comentarios · 1 reacción ·
Los mantenedores suelen responder en 3 días
Todos los issues de microsoft/onnxscript
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
earthtojake/text-to-cad#758 ·
Los mantenedores suelen responder en 1 día
-
domain:upgrades enhancement needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
gke-labs/kube-agents#4634 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
agardnerIT/opamp-server-py#116 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
enhancement good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
elviskahoro/sdk-python-attio#144 · 1 comentario ·
Los mantenedores suelen responder en 1 día