code: def _estimate_value(self) -> None:
      tgt_generator = PolicyLogGenerator(self._env, self._policy)
      log = {}
      for state in self._env.states:
          mdps = []
          for _ in range(self._num_episodes):
              mdps.append(tgt_generator.generate_log(state))
          log[state] = mdps
  
      for state, mdps in log.items():
          avg = RunningAverage()
          for mdp in mdps:
              discount = 1.0
              r = 0.0
              for t in mdp:
                  r += discount * t.reward
                  discount *= self._gamma
              avg.add(r)
          self._state_values[state] = avg.average
  
imports: import pickle
  from functools import reduce
  from typing import List, Mapping, Sequence
  import torch
  from reagent.ope.estimators.sequential_estimators import Model, RLPolicy, State, ValueFunction
  from reagent.ope.estimators.types import Action, ActionDistribution, ActionSpace
  from reagent.ope.test.envs import Environment, PolicyLogGenerator
  from reagent.ope.utils import RunningAverage
label_desc: Use image node_id 2 for calling the EstimatedStateValueFunction obj's underlying member method code with example usage: obj._estimate_value() without return types