code: def _conv(
      input,
      weight,
      bias=None,
      stride=1,
      padding=0,
      dilation=1,
      groups=1,
  ):
      dims = len(input.shape) - 2
      _valid_shapes(input, weight, bias, stride, padding, groups)
  
      if isinstance(padding, str):
          padding = padding.upper()
      else:
          if isinstance(padding, int):
              padding = [*[(padding, padding) for _ in range(dims)]]
          else:
              padding = [*[(p, p) for p in padding]]
  
      ret = ivy.conv(
          input,
          weight,
          stride,
          padding,
          dims=dims,
          data_format="channel_first",
          filter_format="channel_first",
          dilations=dilation,
          feature_group_count=groups,
      )
      if bias is not None:
          return ivy.add(
              ret, ivy.expand_dims(bias, axis=(0, *range(2, dims + 2)))
          )
      return ret
  
imports: import ivy
  from ivy.func_wrapper import with_supported_dtypes
  from ivy.functional.frontends.paddle.func_wrapper import to_ivy_arrays_and_back
  from ivy.functional.ivy.experimental.layers import _broadcast_pooling_helper
label_desc: Use image node_id 1 for calling a global function with example usage: _conv(input, weight, bias, stride, padding, dilation, groups) and returns: ret, ivy