class_docstr: Value approximation objective, which minimizes the L2-distance between the state-(action-)value
  estimate and the target reward value
  (specification key: `value`, `state_value`, `action_value`).
  
  Args:
      value ("state" | "action"): Whether to approximate the state- or state-action-value
          (<span style="color:#C00000"><b>required</b></span>).
      huber_loss (parameter, float > 0.0): Huber loss threshold
          (<span style="color:#00C000"><b>default</b></span>: no huber loss).
      early_reduce (bool): Whether to compute objective for aggregated value instead of value per
          action (<span style="color:#00C000"><b>default</b></span>: true).
      name (string): <span style="color:#0000C0"><b>internal use</b></span>.
      states_spec (specification): <span style="color:#0000C0"><b>internal use</b></span>.
      internals_spec (specification): <span style="color:#0000C0"><b>internal use</b></span>.
      auxiliaries_spec (specification): <span style="color:#0000C0"><b>internal use</b></span>.
      actions_spec (specification): <span style="color:#0000C0"><b>internal use</b></span>.
      reward_spec (specification): <span style="color:#0000C0"><b>internal use</b></span>.
code: def reference(
      self, *, states, horizons, internals, auxiliaries, actions, policy
  ):
      # if self.value == 'state':
      #     if self.early_reduce:
      #         value = policy.state_value(
      #             states=states, horizons=horizons, internals=internals, auxiliaries=auxiliaries
      #         )
      #     else:
      #         value = policy.state_values(
      #             states=states, horizons=horizons, internals=internals, auxiliaries=auxiliaries
      #         )
      #         value = tf.concat(values=tuple(value.values()), axis=1)
  
      # elif self.value == 'action':
      #     if self.early_reduce:
      #         value = policy.action_value(
      #             states=states, horizons=horizons, internals=internals, auxiliaries=auxiliaries,
      #             actions=actions
      #         )
      #     else:
      #         value = policy.action_values(
      #             states=states, horizons=horizons, internals=internals, auxiliaries=auxiliaries,
      #             actions=actions
      #         )
      #         value = tf.concat(values=tuple(value.values()), axis=1)
  
      return tf_util.zeros(
          shape=tf.shape(input=actions.value())[:1], dtype="float"
      )
  
file_path: tensorforce/tensorforce/core/objectives/value.py
imports: import tensorflow
  from tensorforce.core import parameter_modules, TensorSpec, tf_function, tf_util
  from tensorforce.core.objectives import Objective
label_desc: Use image node_id 4 for calling the Value obj's underlying member method code with example usage: obj.reference() and returns: tf_util