class_docstr: A cluster of computation devices for distributed computation.
  
  This API is aligned with `jax.sharding.Mesh` and `tf.dtensor.Mesh`, which
  represents the computation devices in the global context.
  
  See more details in [jax.sharding.Mesh](
      https://jax.readthedocs.io/en/latest/jax.sharding.html#jax.sharding.Mesh)
  and [tf.dtensor.Mesh](
      https://www.tensorflow.org/api_docs/python/tf/experimental/dtensor/Mesh).
  
  Args:
      shape: tuple of list of integers. The shape of the overall
          `DeviceMesh`, e.g. `(8,)` for a data parallel only distribution,
          or `(4, 2)` for a model+data parallel distribution.
      axis_names: List of string. The logical name of the each axis for
          the `DeviceMesh`. The length of the `axis_names` should match to
          the rank of the `shape`. The `axis_names` will be used to
          match/create the `TensorLayout` when distribute the data and
          variables.
      devices: Optional list of devices. Defaults to all the available
          devices locally from `keras.distribution.list_devices()`.
class_docstr_tok: ["A","cluster","of","computation","devices","for","distributed","computation",".","This","API","is","aligned","with","`","jax.sharding.Mesh","`","and","`","tf.dtensor.Mesh","`",",","which","represents","the","computation","devices","in","the","global","context",".","See","more","details","in","[","jax.sharding.Mesh","]","(","https",":","\/\/jax.readthedocs.io\/en\/latest\/jax.sharding.html","#","jax.sharding.Mesh",")","and","[","tf.dtensor.Mesh","]","(","https",":","\/\/www.tensorflow.org\/api_docs\/python\/tf\/experimental\/dtensor\/Mesh",")",".","Args",":","shape",":","tuple","of","list","of","integers",".","The","shape","of","the","overall","`","DeviceMesh","`",",","e.g",".","`","(","8",",",")","`","for","a","data","parallel","only","distribution",",","or","`","(","4",",","2",")","`","for","a","model+data","parallel","distribution",".","axis_names",":","List","of","string",".","The","logical","name","of","the","each","axis","for","the","`","DeviceMesh","`",".","The","length","of","the","`","axis_names","`","should","match","to","the","rank","of","the","`","shape","`",".","The","`","axis_names","`","will","be","used","to","match\/create","the","`","TensorLayout","`","when","distribute","the","data","and","variables",".","devices",":","Optional","list","of","devices",".","Defaults","to","all","the","available","devices","locally","from","`","keras.distribution.list_devices","(",")","`","."]
code: def axis_names(self):
      return self._axis_names
  
imports: import collections
  import contextlib
  import os
  import re
  import warnings
  import numpy
  from keras.api_export import keras_export
  from keras.backend import KerasTensor
  from keras.backend import distribution_lib
  from keras.backend.common import global_state
label_desc: Use image node_id 3 for calling the DeviceMesh obj's underlying member method code with example usage: obj.axis_names() and returns: self