def get_value_estimates(self, brain_info: BrainInfo, idx: int, done: bool) -> Dict[(str, float)]:
    '\n        Generates value estimates for bootstrapping.\n        :param brain_info: BrainInfo to be used for bootstrapping.\n        :param idx: Index in BrainInfo of agent.\n        :param done: Whether or not this is the last element of the episode, in which case the value estimate will be 0.\n        :return: The value estimate dictionary with key being the name of the reward signal and the value the\n        corresponding value estimate.\n        '
    feed_dict: Dict[(tf.Tensor, Any)] = {self.model.batch_size: 1, self.model.sequence_length: 1}
    for i in range(len(brain_info.visual_observations)):
        feed_dict[self.model.visual_in[i]] = [brain_info.visual_observations[i][idx]]
    if self.use_vec_obs:
        feed_dict[self.model.vector_in] = [brain_info.vector_observations[idx]]
    agent_id = brain_info.agents[idx]
    if self.use_recurrent:
        feed_dict[self.model.memory_in] = self.retrieve_memories([agent_id])
    if ((not self.use_continuous_act) and self.use_recurrent):
        feed_dict[self.model.prev_action] = self.retrieve_previous_action([agent_id])
    value_estimates = self.sess.run(self.model.value_heads, feed_dict)
    value_estimates = {k: float(v) for (k, v) in value_estimates.items()}
    if done:
        for k in value_estimates:
            if self.reward_signals[k].use_terminal_states:
                value_estimates[k] = 0.0
    return value_estimates
Generates value estimates for bootstrapping.
:param brain_info: BrainInfo to be used for bootstrapping.
:param idx: Index in BrainInfo of agent.
:param done: Whether or not this is the last element of the episode, in which case the value estimate will be 0.
:return: The value estimate dictionary with key being the name of the reward signal and the value the
corresponding value estimate.
def get_value_estimates(self, brain_info: BrainInfo, idx: int, done: bool) -> Dict[(str, float)]:
    '\n        Generates value estimates for bootstrapping.\n        :param brain_info: BrainInfo to be used for bootstrapping.\n        :param idx: Index in BrainInfo of agent.\n        :param done: Whether or not this is the last element of the episode, in which case the value estimate will be 0.\n        :return: The value estimate dictionary with key being the name of the reward signal and the value the\n        corresponding value estimate.\n        '
    feed_dict: Dict[(tf.Tensor, Any)] = {self.model.batch_size: 1, self.model.sequence_length: 1}
    for i in range(len(brain_info.visual_observations)):
        feed_dict[self.model.visual_in[i]] = [brain_info.visual_observations[i][idx]]
    if self.use_vec_obs:
        feed_dict[self.model.vector_in] = [brain_info.vector_observations[idx]]
    agent_id = brain_info.agents[idx]
    if self.use_recurrent:
        feed_dict[self.model.memory_in] = self.retrieve_memories([agent_id])
    if ((not self.use_continuous_act) and self.use_recurrent):
        feed_dict[self.model.prev_action] = self.retrieve_previous_action([agent_id])
    value_estimates = self.sess.run(self.model.value_heads, feed_dict)
    value_estimates = {k: float(v) for (k, v) in value_estimates.items()}
    if done:
        for k in value_estimates:
            if self.reward_signals[k].use_terminal_states:
                value_estimates[k] = 0.0
    return value_estimates