code: def deepcopy(
      input_module: M, memo: Optional[Dict[int, Any]] = None
  ) -> M:
      """
      Returns a deepcopy of the input tf.Module. To do that first resets the caches stored inside each
      tfp.bijectors.Bijector to allow the deepcopy of the tf.Module.
  
      :param input_module: tf.Module including keras.Model, keras.layers.Layer and gpflow.Module.
      :param memo: passed through to func:`copy.deepcopy`
          (see https://docs.python.org/3/library/copy.html).
      :return: Returns a deepcopy of an input object.
      """
      return copy.deepcopy(reset_cache_bijectors(input_module), memo)
  
imports: import copy
  import re
  from functools import lru_cache
  from typing import Any, Callable, Dict, Mapping, Optional, Pattern, Tuple, Type, TypeVar, Union
  import numpy
  import tensorflow
  import tensorflow_probability
  from packaging.version import Version
  from tabulate import tabulate
  from tensorflow.python.util.object_identity import Reference
  from ..base import AnyNDArray, Parameter
  from ..config import default_summary_fmt
label_desc: Use image node_id 10 for calling a global function with example usage: deepcopy(input_module, memo) and returns: copy