docstr: choose an action to act with in the current episode being played. Different behavior might be exhibited when
  training or testing.
  
  :param curr_state: the current state to act upon.
  :return: chosen action, some action value describing the action (q-value, probability, etc)
docstr_tok: ["choose","an","action","to","act","with","in","the","current","episode","being","played",".","Different","behavior","might","be","exhibited","when","training","or","testing",".",":","param","curr_state",":","the","current","state","to","act","upon",".",":","return",":","chosen","action",",","some","action","value","describing","the","action","(","q-value",",","probability",",","etc",")"]
code: def choose_action(self, curr_state):
      """
      choose an action to act with in the current episode being played. Different behavior might be exhibited when
      training or testing.
  
      :param curr_state: the current state to act upon.
      :return: chosen action, some action value describing the action (q-value, probability, etc)
      """
      pass
  
imports: import copy
  import random
  from collections import OrderedDict
  from typing import Dict, List, Union, Tuple
  import numpy
  from six.moves import range
  from rl_coach.agents.agent_interface import AgentInterface
  from rl_coach.architectures.network_wrapper import NetworkWrapper
  from rl_coach.base_parameters import AgentParameters, Device, DeviceType, DistributedTaskParameters, Frameworks
  from rl_coach.core_types import RunPhase, PredictionType, EnvironmentEpisodes, ActionType, Batch, Episode, StateType
  from rl_coach.core_types import Transition, ActionInfo, TrainingSteps, EnvironmentSteps, EnvResponse
  from rl_coach.logger import screen, Logger, EpisodeLogger
  from rl_coach.memories.episodic.episodic_experience_replay import EpisodicExperienceReplay
  from rl_coach.saver import SaverCollection
  from rl_coach.spaces import SpacesDefinition, VectorObservationSpace, GoalsSpace, AttentionActionSpace
  from rl_coach.utils import Signal, force_list
  from rl_coach.utils import dynamic_import_and_instantiate_module_from_params
  from rl_coach.memories.backend.memory_impl import get_memory_backend
  from rl_coach.core_types import TimeTypes
  from rl_coach.off_policy_evaluators.ope_manager import OpeManager
  from rl_coach.core_types import PickledReplayBuffer, CsvDataset
label_desc: Use image node_id 26 for calling the Agent obj's underlying member method code with example usage: obj.choose_action(curr_state) without return types