code: def _compute_fans(shape: types.ShapeLike):
      """Computes the number of input and output units for a weight shape.
  
      Args:
        shape: Integer shape tuple or `tf.TensorShape`.
  
      Returns:
        A tuple of scalars `(fan_in, fan_out)`.
      """
      if len(shape) < 1:  # Just to avoid errors for constants.
          fan_in = fan_out = 1
      elif len(shape) == 1:
          fan_in = fan_out = shape[0]
      elif len(shape) == 2:
          fan_in = shape[0]
          fan_out = shape[1]
      else:
          # Assuming convolution kernels (2D, 3D, or more).
          # kernel shape: (..., input_depth, depth)
          receptive_field_size = 1.0
          for dim in shape[:-2]:
              receptive_field_size *= dim
          fan_in = shape[-2] * receptive_field_size
          fan_out = shape[-1] * receptive_field_size
      return fan_in, fan_out
  
imports: import abc
  import collections
  from typing import Iterable, Mapping, Optional, Union
  import numpy
  from sonnet.src import types
  import tensorflow
label_desc: Use image node_id 2 for calling a global function with example usage: _compute_fans(shape) and returns: fan_in,  fan_out