code: def group_conv1d_transpose_ncw(
      data, kernel, stride, padding, out_dtype, output_padding, groups
  ):
      """Transposed 1D group convolution ncw forward operator.
  
      Parameters
      ----------
      data : tvm.te.Tensor
          3-D with shape [batch, in_channel, in_width]
  
      kernel : tvm.te.Tensor
          3-D with shape [in_channel, num_filter, filter_width]
  
      stride : ints
          The spatial stride along width
  
      padding : int or str
          Padding size, or ['VALID', 'SAME']
  
      out_dtype : str
          The output data type. This is used for mixed precision.
  
      output_padding : ints
          Used to recover the actual output shape in case there are more
          than one possible shape.  Must be smaller than stride.
  
       groups : int
          number of groups
  
      Returns
      -------
      output : tvm.te.Tensor
          3-D with shape [batch, out_channel, out_width]
  
      """
      if groups == 1:
          return conv1d_transpose_ncw(
              data, kernel, stride, padding, out_dtype, output_padding
          )
  
      _, in_channels, _ = data.shape
  
      assert (
          in_channels % groups == 0
      ), f"input channels {in_channels} must divide group size {groups}"
  
      data_pad, transformed_kernel = _conv1d_transpose_ncw_preprocess(
          data, kernel, stride, padding, out_dtype, output_padding
      )
  
      batch, in_channels, in_w = data_pad.shape
      out_c, _, filter_w = transformed_kernel.shape
  
      # convolution stage
      out_channels = simplify(out_c * groups)
      out_w = simplify(in_w - filter_w + 1)
      dc = te.reduce_axis((0, in_channels // groups), name="dc")
      dw = te.reduce_axis((0, filter_w), name="dw")
  
      # data: batch, in_channels, out_w
      # weight: out_channels // G, in_channels, out_w
      return te.compute(
          (batch, out_channels, out_w),
          lambda b, c, w: te.sum(
              data_pad[
                  b,
                  c
                  // (out_channels // groups)
                  * (in_channels // groups)
                  + dc,
                  w + dw,
              ].astype(out_dtype)
              * transformed_kernel[
                  c % (out_channels // groups),
                  c
                  // (out_channels // groups)
                  * (in_channels // groups)
                  + dc,
                  dw,
              ].astype(out_dtype),
              axis=[dc, dw],
          ),
          tag="group_conv1d_transpose_ncw",
      )
  
file_path: tvm/python/tvm/topi/nn/conv1d_transpose.py
imports: from tvm import te
  from .dilate import dilate
  from .pad import pad
  from ..utils import simplify
  from .utils import get_pad_tuple1d
label_desc: Use image node_id 3 for calling a global function with example usage: group_conv1d_transpose_ncw(data, kernel, stride, padding, out_dtype, output_padding, groups) and returns: te, conv1d_transpose_ncw