class_docstr: This is Duel DQN architecture.
  see https://arxiv.org/abs/1511.06581 for more information.
class_docstr_tok: ["This","is","Duel","DQN","architecture",".","see","https",":","\/\/arxiv.org\/abs\/1511.06581","for","more","information","."]
code: def forward(self, x):
      x = self.conv1(x)
      x = self.conv2(x)
      x = self.conv3(x)
      x = self.conv4(x)
      x = x.view(-1, 192)
      x1 = x[:, :96]  # input for the net to calculate the state value
      x2 = x[:, 96:]  # relative advantage of actions in the state
      state_value = self.state_fc(x1).reshape(-1, 1)
      advantage_values = self.advantage_fc(x2)
      x = state_value + (
          advantage_values - advantage_values.mean(dim=1).reshape(-1, 1)
      )
  
      return x
  
imports: import itertools
  import os
  import random
  from collections import deque
  from time import sleep, time
  import numpy
  import skimage.transform
  import torch
  import torch.nn
  import torch.optim
  from tqdm import trange
  import vizdoom
label_desc: Use image node_id 2 for calling the DuelQNet obj's underlying member method code with example usage: obj.forward(x) and returns: x