code: def __init__(
      self,
      action_space,
      history=4,
      hidden_size=512,
      atoms=51,
      noisy_std=0.1,
  ):
      super().__init__()
  
      self.atoms = atoms
      self.action_space = action_space
  
      self.conv1 = torch.nn.Conv2d(history, 32, 8, stride=4, padding=1)
      self.conv2 = torch.nn.Conv2d(32, 64, 4, stride=2)
      self.conv3 = torch.nn.Conv2d(64, 64, 3)
  
      self.fc_h_v = NoisyLinear(5184, hidden_size, std_init=noisy_std)
      self.fc_h_a = NoisyLinear(5184, hidden_size, std_init=noisy_std)
      self.fc_z_v = NoisyLinear(
          hidden_size, self.atoms, std_init=noisy_std
      )
      self.fc_z_a = NoisyLinear(
          hidden_size, action_space * self.atoms, std_init=noisy_std
      )
  
file_path: SerpentAI/serpent/machine_learning/reinforcement_learning/rainbow_dqn/dqn.py
imports: import torch
  from .noisy_linear import NoisyLinear
label_desc: Use image node_id 1 to create a new DQN3 object from inherited base classes: torch.nn with example: obj = DQN3(action_space, history, hidden_size, atoms, noisy_std)