Returns a Dimension that combines the information in `self` and `other`.

        Dimensions are combined as follows:

        ```python
        tf.Dimension(n)   .merge_with(tf.Dimension(n))    == tf.Dimension(n)
        tf.Dimension(n)   .merge_with(tf.Dimension(None)) == tf.Dimension(n)
        tf.Dimension(None).merge_with(tf.Dimension(n))    == tf.Dimension(n)
        tf.Dimension(None).merge_with(tf.Dimension(None)) == tf.Dimension(None)
        tf.Dimension(n)   .merge_with(tf.Dimension(m))  # raises ValueError for n != m
        ```

        Args:
          other: Another Dimension.

        Returns:
          A Dimension containing the combined information of `self` and
          `other`.

        Raises:
          ValueError: If `self` and `other` are not convertible (see
            is_convertible_with).

def merge_with(self, other):
        """Returns a Dimension that combines the information in `self` and `other`.

        Dimensions are combined as follows:

        ```python
        tf.Dimension(n)   .merge_with(tf.Dimension(n))    == tf.Dimension(n)
        tf.Dimension(n)   .merge_with(tf.Dimension(None)) == tf.Dimension(n)
        tf.Dimension(None).merge_with(tf.Dimension(n))    == tf.Dimension(n)
        tf.Dimension(None).merge_with(tf.Dimension(None)) == tf.Dimension(None)
        tf.Dimension(n)   .merge_with(tf.Dimension(m))  # raises ValueError for n != m
        ```

        Args:
          other: Another Dimension.

        Returns:
          A Dimension containing the combined information of `self` and
          `other`.

        Raises:
          ValueError: If `self` and `other` are not convertible (see
            is_convertible_with).
        """
        other = as_dimension(other)
        self.assert_is_convertible_with(other)
        if self._value is None:
            return Dimension(other.value)
        else:
            return Dimension(self._value)