code: def choose_action(self, curr_state):
      # convert to batch so we can run it through the network
      prediction = self.networks["main"].online_network.predict(
          self.prepare_batch_for_inference(curr_state, "main")
      )
  
      # get action values and extract the best action from it
      action_values = self.extract_action_values(prediction)
      self.exploration_policy.change_phase(RunPhase.TEST)
      action = self.exploration_policy.get_action(action_values)
      action_info = ActionInfo(action=action)
  
      return action_info
  
file_path: coach/rl_coach/agents/imitation_agent.py
imports: from collections import OrderedDict
  from typing import Union
  from rl_coach.agents.agent import Agent
  from rl_coach.core_types import RunPhase, ActionInfo
  from rl_coach.logger import screen
  from rl_coach.spaces import DiscreteActionSpace
label_desc: Use image node_id 4 for calling the ImitationAgent obj's underlying member method code with example usage: obj.choose_action(curr_state) and returns: action_info