class_docstr: A head is the final part of the network. It takes the embedding from the middleware embedder and passes it through
  a neural network to produce the output of the network. There can be multiple heads in a network, and each one has
  an assigned loss function. The heads are algorithm dependent.
docstr: Wrapper for building the module graph including scoping and loss creation
  :param input_layer: the input to the graph
  :return: the output of the last layer and the target placeholder
docstr_tok: ["Wrapper","for","building","the","module","graph","including","scoping","and","loss","creation",":","param","input_layer",":","the","input","to","the","graph",":","return",":","the","output","of","the","last","layer","and","the","target","placeholder"]
code: def __call__(self, input_layer):
      """
      Wrapper for building the module graph including scoping and loss creation
      :param input_layer: the input to the graph
      :return: the output of the last layer and the target placeholder
      """
  
      with tf.variable_scope(
          self.get_name(),
          initializer=tf.contrib.layers.xavier_initializer(),
      ):
          self._build_module(squeeze_tensor(input_layer))
  
          self.output = force_list(self.output)
          self.target = force_list(self.target)
          self.input = force_list(self.input)
          self.loss_type = force_list(self.loss_type)
          self.loss = force_list(self.loss)
          self.regularizations = force_list(self.regularizations)
          if self.is_local:
              self.set_loss()
          self._post_build()
  
      if self.is_local:
          return (
              self.output,
              self.target,
              self.input,
              self.importance_weight,
          )
      else:
          return self.output, self.input
  
imports: import numpy
  import tensorflow
  from tensorflow.python.ops.losses.losses_impl import Reduction
  from rl_coach.architectures.tensorflow_components.layers import Dense, convert_layer_class
  from rl_coach.base_parameters import AgentParameters
  from rl_coach.spaces import SpacesDefinition
  from rl_coach.utils import force_list
  from rl_coach.architectures.tensorflow_components.utils import squeeze_tensor
label_desc: Use image node_id 2 for calling the Head obj's underlying member method code with example usage: obj.__call__(input_layer) and returns: self,  self,  self,  self, self,  self