class_docstr: Cache and reuse backend for testing. Useful for testing multiple expressions
  per backend. A backend is identified by the backend module and dtype.
docstr: Arguments:
      backend_module: NervanaGPU, NervanaCPU, NervanaMKL
      dtype: np.float32, np.float16, etc
  
  Returns:
      Backend: the corresponding backend with certain default_dtype
docstr_tok: ["Arguments",":","backend_module",":","NervanaGPU",",","NervanaCPU",",","NervanaMKL","dtype",":","np.float32",",","np.float16",",","etc","Returns",":","Backend",":","the","corresponding","backend","with","certain","default_dtype"]
code: def get_backend(backend_module, dtype):
      """
      Arguments:
          backend_module: NervanaGPU, NervanaCPU, NervanaMKL
          dtype: np.float32, np.float16, etc
  
      Returns:
          Backend: the corresponding backend with certain default_dtype
      """
      if backend_module not in BackendPool.pools:
          BackendPool.pools[backend_module] = dict()
      pool = BackendPool.pools[backend_module]
  
      if dtype not in pool:
          pool[dtype] = backend_module(default_dtype=dtype)
  
      be = pool[dtype]
      return be
  
file_path: neon/tests/utils.py
imports: from builtins import zip
  import numpy
  import numpy.random
  from neon import logger
  from neon.backends.backend import Tensor
label_desc: Use image node_id 1 for calling the BackendPool obj's underlying member method code with example usage: obj.get_backend(backend_module, dtype) and returns: be