[Bug] [Relax][ONNX] Resize align_corners divides by zero for a unit output extent
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 78/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- python
- Ambito
- backend, machine-learning
Direzione di ricerca
Inizia da python/tvm/topi/image/resize.py, partendo dal calcolo delle coordinate collegato nell’issue, poi leggi la regola align_corners di ONNX Resize-13 per dimensioni di output pari a uno. Esegui la riproduzione fornita per le altezze 3 e 1; il lavoro è completato quando il caso con altezza 1 viene compilato e restituisce [[[[0, 0.5, 1]]]], mentre il caso di controllo con altezza 3 continua a passare. Aggiungi o individua un test di regressione per questo caso.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Expected behavior
Resize-13 maps the coordinate to zero when an align_corners output extent is one. Resizing this input to (1,1,1,3) should return [[[[0,0.5,1]]]].
Actual behavior
Output height 3 executes correctly; changing only height to 1 fails while building with Divide by zero. The coordinate calculation divides by output_size-1 without the unit-extent case. This differs from #20877, which concerns the tf_crop_and_resize branch.
Environment
TVM 0.28.dev0, LLVM 18.1.3, Linux x86_64; Python 3.12.3, NumPy 2.5.4, ONNX 1.22.0. Installed binary build revision is unknown. Current main was inspected statically, not rebuilt.
Steps to reproduce
import numpy as np
import onnx
import tvm
from onnx import TensorProto as T, helper as h, numpy_helper as nh
from onnx.reference import ReferenceEvaluator
from tvm import relax
from tvm.relax.frontend.onnx import from_onnx
x = np.arange(4, dtype="float32").reshape(1, 1, 2, 2)
for height in [3, 1]:
shape = [1, 1, height, 3]
model = h.make_model(h.make_graph([
h.make_node("Resize", ["x", "", "", "sizes"], ["y"], mode="linear", coordinate_transformation_mode="align_corners")],
"resize", [h.make_tensor_value_info("x", T.FLOAT, x.shape)],
[h.make_tensor_value_info("y", T.FLOAT, shape)],
[nh.from_array(np.array(shape, dtype="int64"), "sizes")]),
opset_imports=[h.make_opsetid("", 13)], ir_version=10)
onnx.checker.check_model(model, full_check=True)
expected = ReferenceEvaluator(model).run(None, {"x": x})[0]
if height == 1:
np.testing.assert_array_equal(expected, [[[[0, .5, 1]]]])
try:
mod = from_onnx(model, keep_params_in_input=False)
vm = relax.VirtualMachine(relax.build(mod, target="llvm"), tvm.cpu())
actual = vm["main"](tvm.runtime.tensor(x)).numpy()
except Exception as error:
if height != 1:
raise
assert "zero" in str(error).lower()
print("size-one failure:", type(error).__name__, str(error).splitlines()[-1])
else:
np.testing.assert_allclose(actual, expected)
assert height != 1, "Expected the reported divide-by-zero failure"
print("non-unit output control passed")
Triage
- needs-triage
- Lingua principale
- Python
- Stelle
- 13.9k
- Fork
- 4k
- Merge medio
- 8h 6m
- PR unite (30g)
- 147
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/tvm
-
needs-triage type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug] [Relax][ONNX] OneHot does not convert floating-point depth to int64Forse già presa @tandede l’ha presa 3 giorni fa. Apertaneeds-triage type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
needs-triage type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
needs-triage type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug][Relax] ReorderTakeAfterMatmul fails on vector dot productsForse già presa @hiyufan l’ha presa 13 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
apache/tvm#20595 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Issue simili
-
ChatBedrockConverse changes the keys of JSON tool results to camelCase (`order_id` becomes `orderId`)Forse già presa @geyazheng l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
langchain-ai/langchain-aws#1469 ·
I maintainer di solito rispondono entro 1 giorno
-
GCToggler leaves collection enabled if the body re-enables itForse già presa @Gambit-Checkmate l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 7 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
doronz88/pymobiledevice3#2176 ·
I maintainer di solito rispondono entro 1 giorno
-
b4b usability
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno