class_docstr: Implements the TF backend ops for a PC auto-batching VM.
docstr: Merges two shapes, returning a broadcasted shape.
  
  Args:
    s1: A `list` of Python `int` or None.
    s2: A `list` of Python `int` or None.
  
  Returns:
    shape: A `list` of Python `int` or None.
  
  Raises:
    ValueError: If `s1` and `s2` are not broadcast compatible.
docstr_tok: ["Merges","two","shapes",",","returning","a","broadcasted","shape",".","Args",":","s1",":","A","`","list","`","of","Python","`","int","`","or","None",".","s2",":","A","`","list","`","of","Python","`","int","`","or","None",".","Returns",":","shape",":","A","`","list","`","of","Python","`","int","`","or","None",".","Raises",":","ValueError",":","If","`","s1","`","and","`","s2","`","are","not","broadcast","compatible","."]
code: def merge_shapes(self, s1, s2):
      """Merges two shapes, returning a broadcasted shape.
  
      Args:
        s1: A `list` of Python `int` or None.
        s2: A `list` of Python `int` or None.
  
      Returns:
        shape: A `list` of Python `int` or None.
  
      Raises:
        ValueError: If `s1` and `s2` are not broadcast compatible.
      """
      new_shp = tf.broadcast_static_shape(
          tf.TensorShape(s1), tf.TensorShape(s2)
      )
      return None if new_shp.ndims is None else tuple(new_shp.as_list())
  
imports: import collections
  import contextlib
  import six
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.experimental.auto_batching import instructions
  from tensorflow_probability.python.experimental.auto_batching import xla
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow.python.ops import control_flow_util
label_desc: Use image node_id 6 for calling the TensorFlowBackend obj's underlying member method code with example usage: obj.merge_shapes(s1, s2) and returns: unknown