class_docstr: A device which executes operations in parallel.
class_docstr_tok: ["A","device","which","executes","operations","in","parallel","."]
docstr: Unpack a parallel tensor into its components.
  
  Args:
    parallel_tensor: A tensor, composite tensor, or `tf.nest` of such placed
      on the ParallelDevice. Passing `tf.Variable` objects reads their value,
      it does not share a mutable reference between the packed and unpacked
      forms.
  
  Returns:
    A list with the same length as `self.components` each with the same
    structure as `parallel_tensor`, containing component tensors.
docstr_tok: ["Unpack","a","parallel","tensor","into","its","components",".","Args",":","parallel_tensor",":","A","tensor",",","composite","tensor",",","or","`","tf.nest","`","of","such","placed","on","the","ParallelDevice",".","Passing","`","tf.Variable","`","objects","reads","their","value",",","it","does","not","share","a","mutable","reference","between","the","packed","and","unpacked","forms",".","Returns",":","A","list","with","the","same","length","as","`","self.components","`","each","with","the","same","structure","as","`","parallel_tensor","`",",","containing","component","tensors","."]
code: def unpack(self, parallel_tensor):
      """Unpack a parallel tensor into its components.
  
      Args:
        parallel_tensor: A tensor, composite tensor, or `tf.nest` of such placed
          on the ParallelDevice. Passing `tf.Variable` objects reads their value,
          it does not share a mutable reference between the packed and unpacked
          forms.
  
      Returns:
        A list with the same length as `self.components` each with the same
        structure as `parallel_tensor`, containing component tensors.
  
      """
      self._assert_eager()
      unpacked_components = [[] for _ in range(len(self.components))]
      with ops.device(self._name):
          parallel_tensor = variable_utils.convert_variables_to_tensors(
              parallel_tensor
          )
      for tensor in nest.flatten(
          parallel_tensor, expand_composites=True
      ):
          for accumulator, unpacked_tensor in zip(
              unpacked_components, self._unpack_tensor(tensor)
          ):
              accumulator.append(unpacked_tensor)
      return [
          nest.pack_sequence_as(
              parallel_tensor, unpacked, expand_composites=True
          )
          for unpacked in unpacked_components
      ]
  
imports: import threading
  import weakref
  from tensorflow.python import _pywrap_parallel_device
  from tensorflow.python.distribute import device_util
  from tensorflow.python.eager import context
  from tensorflow.python.framework import composite_tensor
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import tensor
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import variables
  from tensorflow.python.tpu.ops import tpu_ops
  from tensorflow.python.util import nest
  from tensorflow.python.util import variable_utils
label_desc: Use image node_id 5 for calling the ParallelDevice obj's underlying member method code with example usage: obj.unpack(parallel_tensor) and returns: unknown