class_docstr: References:
  ===========
      - https://towardsdatascience.com/deep-reinforcement-learning-build-a-deep-q-network-dqn-to-play-cartpole-with-tensorflow-2-and-gym-8e105744b998
      - https://pytorch.org/tutorials/intermediate/reinforcement_q_learning.html#dqn-algorithm
      - https://arxiv.org/abs/1802.00308
code: def __init__(
      self, env: "TradingEnv", policy_network: tf.keras.Model = None
  ):
      self.env = env
      self.n_actions = env.action_space.n
      self.observation_shape = env.observation_space.shape
  
      self.policy_network = (
          policy_network or self._build_policy_network()
      )
  
      self.target_network = tf.keras.models.clone_model(
          self.policy_network
      )
      self.target_network.trainable = False
  
      self.env.agent_id = self.id
  
file_path: tensortrade/tensortrade/agents/dqn_agent.py
imports: from deprecated import deprecated
  import random
  import numpy
  import tensorflow
  from collections import namedtuple
  from tensortrade.agents import Agent, ReplayMemory
  from datetime import datetime
label_desc: Use image node_id 1 to create a new DQNAgent object from inherited base classes: Agent with example: obj = DQNAgent(env, policy_network)