code: def unpack_from_int(value, original_bitrange, target_bitrange, shape):
      """Unpack integers into the range of [0, 2**`original_bitrange`-1].
  
      This utility is to be used as the inverse of `pack_into_int` utility.
  
      The shape of the original input is needed for uniqueness of the inverse
      operation -- inputs of different shapes can be packed into the same
      representation.
  
      Args:
        value: An integer Tensor to be unpacked.
        original_bitrange: An integer. The number of bits used in the original
          representation.
        target_bitrange: An integer. The number of bits used in the packed
          representation.
        shape: The shape of the original input.
  
      Returns:
        An integer Tensor representing the unpacked `value` of the same dtype as
        `value`.
      """
      # TODO(b/161433177): Provide a general solution without memory overhead.
      # Special cases implemented without extra memory overhead.
      if original_bitrange == 6 and target_bitrange == 28:
          return _unpack_from_int_6_28(value, shape)
      if original_bitrange == 7 and target_bitrange == 28:
          return _unpack_from_int_7_28(value, shape)
      if original_bitrange == 8 and target_bitrange == 28:
          return _unpack_from_int_8_28(value, shape)
      if original_bitrange == 12 and target_bitrange == 28:
          return _unpack_from_int_12_28(value, shape)
  
      # General solution with extra memory overhead.
      logging.warning(
          "This code path can temporarily allocate extra memory. If "
          "memory footprint is a problem, consider different bitpacking"
          " method or turning this functionality off. See b/161433177"
      )
      value = _expand_to_binary_form(value, target_bitrange)
      value = tf.slice(
          value, [0], [tf.reduce_prod(shape) * original_bitrange]
      )
      if original_bitrange > 1:
          return tf.reshape(
              _pack_binary_form(value, original_bitrange), shape
          )
      else:
          return tf.reshape(value, shape)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import logging
  import math
  import numpy
  import tensorflow
label_desc: Use image node_id 8 for calling a global function with example usage: unpack_from_int(value, original_bitrange, target_bitrange, shape) and returns: _unpack_from_int_6_28, _unpack_from_int_7_28, _unpack_from_int_8_28, _unpack_from_int_12_28, tf, tf