code: def effective_kernel(kernel_shape, dilations):
      """
  
      Args:
          kernel_shape: tuple[int] representing the kernel shape in each
              given dimension.
          dilations: tuple[int] representing the dilation of the kernel
              in each given dimension.  Must be the same length as
              kernel_shape, and is assumed to give the dimensions in
              the same order as kernel_shape
  
      Returns: tuple[int] representing the effective shape of the kernel
          in each given dimension, with each dimension in the order given,
          taking into account dilation.
          See http://deeplearning.net/software/theano/tutorial/conv_arithmetic.html#dilated-convolutions
          Note that a dilation of 1 is equivalent to having no dilation.
  
      """
      if len(kernel_shape) != len(dilations):
          raise ValueError(
              "kernel_shape ({}) and dilations ({}) must be the same length".format(
                  len(kernel_shape), len(dilations)
              )
          )
      return [(k - 1) * d + 1 for k, d in zip(kernel_shape, dilations)]
  
file_path: turicreate/src/external/coremltools_wrap/coremltools/coremltools/converters/mil/mil/ops/defs/_utils.py
imports: import math
  import coremltools.converters
  import sympy
  from coremltools.converters.mil.mil.types.symbolic import is_symbolic
  from ._op_reqs import *
label_desc: Use image node_id 3 for calling a global function with example usage: effective_kernel(kernel_shape, dilations) and returns: unknown