class_docstr: Constrains `Conv2D` kernel weights to be the same for each radius.
  
  Also available via the shortcut function
  `tf.keras.constraints.radial_constraint`.
  
  For example, the desired output for the following 4-by-4 kernel:
  
  ```
      kernel = [[v_00, v_01, v_02, v_03],
                [v_10, v_11, v_12, v_13],
                [v_20, v_21, v_22, v_23],
                [v_30, v_31, v_32, v_33]]
  ```
  
  is this::
  
  ```
      kernel = [[v_11, v_11, v_11, v_11],
                [v_11, v_33, v_33, v_11],
                [v_11, v_33, v_33, v_11],
                [v_11, v_11, v_11, v_11]]
  ```
  
  This constraint can be applied to any `Conv2D` layer version, including
  `Conv2DTranspose` and `SeparableConv2D`, and with either `"channels_last"` or
  `"channels_first"` data format. The method assumes the weight tensor is of
  shape `(rows, cols, input_depth, output_depth)`.
code: def __call__(self, w):
      w_shape = w.shape
      if w_shape.rank is None or w_shape.rank != 4:
          raise ValueError(
              "The weight tensor must be of rank 4, but is of shape: %s"
              % w_shape
          )
  
      height, width, channels, kernels = w_shape
      w = backend.reshape(w, (height, width, channels * kernels))
      # TODO(cpeter): Switch map_fn for a faster tf.vectorized_map once
      # backend.switch is supported.
      w = backend.map_fn(
          self._kernel_constraint,
          backend.stack(array_ops_stack.unstack(w, axis=-1), axis=0),
      )
      return backend.reshape(
          backend.stack(array_ops_stack.unstack(w, axis=0), axis=-1),
          (height, width, channels, kernels),
      )
  
imports: from tensorflow.python.framework import tensor_shape
  from tensorflow.python.keras import backend
  from tensorflow.python.keras.utils.generic_utils import deserialize_keras_object
  from tensorflow.python.keras.utils.generic_utils import serialize_keras_object
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import array_ops_stack
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import while_loop
  from tensorflow.tools.docs import doc_controls
label_desc: Use image node_id 1 for calling the RadialConstraint obj's underlying member method code with example usage: obj.__call__(w) and returns: backend