code: def test_late_horizon_estimate(self):
      self.start_tests(name="late horizon estimate")
  
      # TODO: action value doesn't exist for Beta
      actions = dict(
          bool_action=dict(type="bool", shape=(1,)),
          int_action1=dict(type="int", shape=(), num_values=4),
          int_action2=dict(type="int", shape=(2,), num_values=3),
          int_action3=dict(type="int", shape=(2, 1), num_values=2),
          gaussian_action1=dict(
              type="float", shape=(1, 2), min_value=1.0, max_value=2.0
          ),
          gaussian_action2=dict(
              type="float", shape=(1,), min_value=-2.0, max_value=1.0
          ),
      )
      reward_estimation = dict(
          horizon=3,
          predict_horizon_values="late",
          return_processing="batch_normalization",
      )
      # Implicit baseline = policy
      # Implicit baseline_optimizer = 1.0
      baseline_objective = "state_value"
      self.unittest(
          actions=actions,
          reward_estimation=reward_estimation,
          baseline_objective=baseline_objective,
      )
  
      # Action-value baseline compatible with discrete actions
      actions = dict(
          bool_action=dict(type="bool", shape=(1,)),
          int_action1=dict(type="int", shape=(), num_values=4),
          int_action2=dict(type="int", shape=(2,), num_values=3),
          int_action3=dict(type="int", shape=(2, 1), num_values=2),
      )
      reward_estimation = dict(
          horizon=3,
          predict_horizon_values="late",
          predict_action_values=True,
          return_processing="batch_normalization",
      )
      # TODO: baseline horizon has to be equal to policy horizon
      baseline = dict(network=dict(type="auto", size=7, depth=1, rnn=2))
      baseline_optimizer = 2.0
      baseline_objective = "action_value"
      self.unittest(
          actions=actions,
          reward_estimation=reward_estimation,
          baseline=baseline,
          baseline_optimizer=baseline_optimizer,
          baseline_objective=baseline_objective,
      )
  
      # TODO: state value doesn't exist for Beta
      actions = dict(
          bool_action=dict(type="bool", shape=(1,)),
          int_action1=dict(type="int", shape=(), num_values=4),
          int_action2=dict(type="int", shape=(2,), num_values=3),
          int_action3=dict(type="int", shape=(2, 1), num_values=2),
          gaussian_action1=dict(
              type="float", shape=(1, 2), min_value=1.0, max_value=2.0
          ),
          gaussian_action2=dict(
              type="float", shape=(1,), min_value=-2.0, max_value=1.0
          ),
      )
      reward_estimation = dict(
          horizon=3,
          predict_horizon_values="late",
          predict_terminal_values=True,
          return_processing="batch_normalization",
      )
      # Implicit baseline = policy
      baseline_optimizer = dict(optimizer="adam", learning_rate=1e-3)
      baseline_objective = "state_value"
      self.unittest(
          actions=actions,
          reward_estimation=reward_estimation,
          baseline_optimizer=baseline_optimizer,
          baseline_objective=baseline_objective,
      )
  
      reward_estimation = dict(
          horizon=3,
          predict_horizon_values="late",
          predict_action_values=True,
          predict_terminal_values=True,
          return_processing="batch_normalization",
      )
      # TODO: baseline horizon has to be equal to policy horizon
      # (Not specifying customized distributions since action value doesn't exist for Beta)
      baseline = dict(
          type="parametrized_distributions",
          network=dict(type="auto", size=7, depth=1, rnn=2),
      )
      baseline_optimizer = dict(optimizer="adam", learning_rate=1e-3)
      baseline_objective = "action_value"
      self.unittest(
          reward_estimation=reward_estimation,
          baseline=baseline,
          baseline_optimizer=baseline_optimizer,
          baseline_objective=baseline_objective,
      )
  
file_path: tensorforce/test/test_reward_estimation.py
imports: import unittest
  from test.unittest_base import UnittestBase
label_desc: Use image node_id 3 for calling the TestRewardEstimation obj's underlying member method code with example usage: obj.test_late_horizon_estimate() without return types