class_docstr: Dueling Q-Network
  
  See: http://arxiv.org/abs/1511.06581
class_docstr_tok: ["Dueling","Q-Network","See",":","http",":","\/\/arxiv.org\/abs\/1511.06581"]
code: def __init__(
      self, n_actions, n_input_channels=4, activation=F.relu, bias=0.1
  ):
      self.n_actions = n_actions
      self.n_input_channels = n_input_channels
      self.activation = activation
  
      super().__init__()
      self.conv_layers = nn.ModuleList(
          [
              nn.Conv2d(n_input_channels, 32, 8, stride=4),
              nn.Conv2d(32, 64, 4, stride=2),
              nn.Conv2d(64, 64, 3, stride=1),
          ]
      )
  
      self.a_stream = MLP(3136, n_actions, [512])
      self.v_stream = MLP(3136, 1, [512])
  
      self.conv_layers.apply(
          init_chainer_default
      )  # MLP already applies
      self.conv_layers.apply(constant_bias_initializer(bias=bias))
  
file_path: pfrl/pfrl/q_functions/dueling_dqn.py
imports: import torch
  import torch.nn
  import torch.nn.functional
  from pfrl import action_value
  from pfrl.initializers import init_chainer_default
  from pfrl.nn.mlp import MLP
  from pfrl.q_function import StateQFunction
label_desc: Use image node_id 1 to create a new DuelingDQN object from inherited base classes: nn, StateQFunction with example: obj = DuelingDQN(n_actions, n_input_channels, activation, bias)