code: def _build_module(self, input_layer):
      self.old_policy_value = tf.placeholder(
          tf.float32, [None], "old_policy_values"
      )
      self.input = [self.old_policy_value]
      self.output = self.dense_layer(1)(
          input_layer,
          name="output",
          kernel_initializer=normalized_columns_initializer(1.0),
          bias_initializer=self.output_bias_initializer,
      )
      self.target = self.total_return = tf.placeholder(
          tf.float32, [None], name="total_return"
      )
  
      value_loss_1 = tf.square(self.output - self.target)
      value_loss_2 = tf.square(
          self.old_policy_value
          + tf.clip_by_value(
              self.output - self.old_policy_value,
              -self.clip_likelihood_ratio_using_epsilon,
              self.clip_likelihood_ratio_using_epsilon,
          )
          - self.target
      )
      self.vf_loss = tf.reduce_mean(
          tf.maximum(value_loss_1, value_loss_2)
      )
      self.loss = self.vf_loss
      tf.losses.add_loss(self.loss)
  
file_path: coach/rl_coach/architectures/tensorflow_components/heads/ppo_v_head.py
imports: import tensorflow
  from rl_coach.architectures.tensorflow_components.layers import Dense
  from rl_coach.architectures.tensorflow_components.heads.head import Head, normalized_columns_initializer
  from rl_coach.base_parameters import AgentParameters
  from rl_coach.core_types import ActionProbabilities
  from rl_coach.spaces import SpacesDefinition
label_desc: Use image node_id 2 for calling the PPOVHead obj's underlying member method code with example usage: obj._build_module(input_layer) without return types