code: def conv2d_winograd_weight_transform(kernel, tile_size):
      """Weight transformation for winograd
  
      Parameters
      ----------
      kernel: Tensor
          The raw kernel tensor with layout "NCHW".
      tile_size: int
          Tile size of winograd transform. e.g. 2 for F(2x2, 3x3) and 4 for F(4x4, 3x3)
  
      Returns
      -------
      output : tvm.te.Tensor
          4-D with shape [alpha, alpha, CO, CI]
      """
      shape = get_const_tuple(kernel.shape)
      assert shape[2] == shape[3], "Only support NxN kernel"
  
      K = shape[3]
      r = tile_size + K - 1
      shape = (r, r) + shape[:2]
  
      _, _, G = winograd_transform_matrices(tile_size, K, kernel.dtype)
  
      r_kh = te.reduce_axis((0, K), name="r_kh")
      r_kw = te.reduce_axis((0, K), name="r_kw")
      return te.compute(
          shape,
          lambda eps, nu, co, ci: te.sum(
              kernel[co][ci][r_kh][r_kw] * G[eps][r_kh] * G[nu][r_kw],
              axis=[r_kh, r_kw],
          ),
          name="transform_weight",
      )
  
imports: from __future__ import absolute_import
  import re
  from collections import namedtuple
  from typing import Optional, Sequence, Union
  import numpy
  import tvm
  from tvm import auto_scheduler, te
  from ..utils import get_const_int, get_const_tuple, simplify, tag
  from .pad import pad
  from .utils import get_pad_tuple, get_pad_tuple_generic
  from .winograd_util import winograd_transform_matrices
label_desc: Use image node_id 13 for calling a global function with example usage: conv2d_winograd_weight_transform(kernel, tile_size) and returns: te