| 318 | |
| 319 | |
| 320 | def test_roi_align(): |
| 321 | @R.function |
| 322 | def foo( |
| 323 | x: R.Tensor((1, 2, 8, 8), "float32"), |
| 324 | rois: R.Tensor((2, 5), "float32"), |
| 325 | ) -> R.Tensor((2, 2, 3, 3), "float32"): |
| 326 | gv: R.Tensor((2, 2, 3, 3), "float32") = R.vision.roi_align( |
| 327 | x, |
| 328 | rois, |
| 329 | pooled_size=(3, 3), |
| 330 | spatial_scale=1.0, |
| 331 | sample_ratio=2, |
| 332 | layout="NCHW", |
| 333 | mode="avg", |
| 334 | ) |
| 335 | return gv |
| 336 | |
| 337 | x = relax.Var("x", R.Tensor((1, 2, 8, 8), "float32")) |
| 338 | rois = relax.Var("rois", R.Tensor((2, 5), "float32")) |
| 339 | |
| 340 | bb = relax.BlockBuilder() |
| 341 | with bb.function("foo", [x, rois]): |
| 342 | gv = bb.emit( |
| 343 | relax.op.vision.roi_align( |
| 344 | x, rois, (3, 3), 1.0, sample_ratio=2, layout="NCHW", mode="avg" |
| 345 | ) |
| 346 | ) |
| 347 | bb.emit_func_output(gv) |
| 348 | |
| 349 | _check(foo, bb.get()["foo"]) |
| 350 | |
| 351 | |
| 352 | if __name__ == "__main__": |