)]}'
{
  "commit": "06a7cda8aa7c7c6e7a5e0de082dad0dbb027a35b",
  "tree": "05f51a492f9ab94d7c5c09f5675186c00b9bf2c1",
  "parents": [
    "b50ee5fce20aa98e1f1bdecd97b14490c24e6809"
  ],
  "author": {
    "name": "Nguyen Duy Loc",
    "email": "77536430+locnd182644@users.noreply.github.com",
    "time": "Tue Jan 06 21:29:22 2026 +0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Jan 06 22:29:22 2026 +0800"
  },
  "message": "[Relax][Op] Fixed incorrect output shape of Pool op when ceil_mode \u003d true (#18641)\n\n### Summary\nFixed incorrect output shape of Pool op when ceil_mode \u003d true\n\n### Steps to Reproduce\nExample: Create Pool Operator from PyTorch\n```\nclass PoolModule(nn.Module):\n    def forward(self, x):\n        return torch.nn.AvgPool2d(2, 2, 1, True)(x)\n```\n```\nclass Module:\n    def main(x: R.Tensor((1, 3, 17, 17), dtype\u003d\"float32\")) -\u003e R.Tuple(R.Tensor((1, 3, 10, 10), dtype\u003d\"float32\")):\n        with R.dataflow():\n            lv: R.Tensor((1, 3, 10, 10), dtype\u003d\"float32\") \u003d R.nn.avg_pool2d(x, pool_size\u003d[2, 2], strides\u003d[2, 2], dilation\u003d[1, 1], padding\u003d[1, 1, 1, 1], ceil_mode\u003dTrue, count_include_pad\u003dTrue, layout\u003d\"NCHW\", out_layout\u003d\"NCHW\")\n            gv: R.Tuple(R.Tensor((1, 3, 10, 10), dtype\u003d\"float32\")) \u003d (lv,)\n            R.output(gv)\n        return gv\n```\n\n### Expected\n```\nclass Module:\n    def main(x: R.Tensor((1, 3, 17, 17), dtype\u003d\"float32\")) -\u003e R.Tuple(R.Tensor((1, 3, 9, 9), dtype\u003d\"float32\")):\n        with R.dataflow():\n            lv: R.Tensor((1, 3, 9, 9), dtype\u003d\"float32\") \u003d R.nn.avg_pool2d(x, pool_size\u003d[2, 2], strides\u003d[2, 2], dilation\u003d[1, 1], padding\u003d[1, 1, 1, 1], ceil_mode\u003dTrue, count_include_pad\u003dTrue, layout\u003d\"NCHW\", out_layout\u003d\"NCHW\")\n            gv: R.Tuple(R.Tensor((1, 3, 9, 9), dtype\u003d\"float32\")) \u003d (lv,)\n            R.output(gv)\n        return gv\n\n```\n### Resolve\n- Citation:\nhttps://docs.pytorch.org/docs/stable/generated/torch.nn.AvgPool2d.html\n\u003cimg width\u003d\"500\" height\u003d\"200\" alt\u003d\"PR1\"\nsrc\u003d\"https://github.com/user-attachments/assets/52a27448-006f-409e-b8b4-65f49e908d5f\"\n/\u003e\n\n- Fixed: #18594",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b977a54a5920854c15246a39a5f49243f8539c8c",
      "old_mode": 33188,
      "old_path": "include/tvm/topi/nn/pooling.h",
      "new_id": "3caf7bf1f7d2f7f3dedb9408efffc66f0d97f008",
      "new_mode": 33188,
      "new_path": "include/tvm/topi/nn/pooling.h"
    },
    {
      "type": "modify",
      "old_id": "584135520000eb46937ef400a0c3d2e15d9aef8b",
      "old_mode": 33188,
      "old_path": "src/relax/op/nn/pooling.cc",
      "new_id": "1a19872c279492a1b29276e96ba5b64ba029279a",
      "new_mode": 33188,
      "new_path": "src/relax/op/nn/pooling.cc"
    }
  ]
}
