class_docstr: Q-learning agent.
  
  Including:
  - DQN https://storage.googleapis.com/deepmind-media/dqn/DQNNaturePaper.pdf
  - Prioritized Experience Replay https://arxiv.org/pdf/1511.05952.pdf
  - Dueling Network https://arxiv.org/pdf/1511.06581.pdf
  - Double Q Learning https://arxiv.org/pdf/1509.06461.pdf
class_docstr_tok: ["Q-learning","agent",".","Including",":","-","DQN","https",":","\/\/storage.googleapis.com\/deepmind-media\/dqn\/DQNNaturePaper.pdf","-","Prioritized","Experience","Replay","https",":","\/\/arxiv.org\/pdf\/1511.05952.pdf","-","Dueling","Network","https",":","\/\/arxiv.org\/pdf\/1511.06581.pdf","-","Double","Q","Learning","https",":","\/\/arxiv.org\/pdf\/1509.06461.pdf"]
docstr: Epsilon greedy policy.
  
  Args:
      state (object): observation seen by agent, which can be different
          from what is provided by the environment. The difference comes
          from preprcessing.
  
  Returns:
      action (int): action choosen by agent.
      debug_info (str): auxiliary diagnostic information.
docstr_tok: ["Epsilon","greedy","policy",".","Args",":","state","(","object",")",":","observation","seen","by","agent",",","which","can","be","different","from","what","is","provided","by","the","environment",".","The","difference","comes","from","preprcessing",".","Returns",":","action","(","int",")",":","action","choosen","by","agent",".","debug_info","(","str",")",":","auxiliary","diagnostic","information","."]
code: def _choose_action(self, state):
      """
      Epsilon greedy policy.
  
      Args:
          state (object): observation seen by agent, which can be different
              from what is provided by the environment. The difference comes
              from preprcessing.
  
      Returns:
          action (int): action choosen by agent.
          debug_info (str): auxiliary diagnostic information.
      """
      if (
          self.step_count < self._parameters.replay_start_size
          or np.random.uniform(0, 1) < self._epsilon
      ):
          return np.random.randint(self._num_actions), "RANDOM"
      else:
          return np.argmax(self._evaluate_q(self._q, state)), "GREEDY"
  
imports: import math
  import cntk
  import numpy
  import ast
  from .agent import AgentBaseClass
  from .shared.cntk_utils import huber_loss
  from .shared.models import Models
  from .shared.qlearning_parameters import QLearningParameters
  from .shared.replay_memory import ReplayMemory
label_desc: Use image node_id 9 for calling the QLearning obj's underlying member method code with example usage: obj._choose_action(state) and returns: np,  str, np,  str