docstr: inputs: [ s(t), o(t)_a, u(t)_a, agent_a, u(t-1) ], shape: (Batch, input_shape)
  output: Q,   shape: (Batch, n_actions)
  Batch = ep_num * n_agents
docstr_tok: ["inputs",":","[","s","(","t",")",",","o","(","t",")","_a",",","u","(","t",")","_a",",","agent_a",",","u","(","t-1",")","]",",","shape",":","(","Batch",",","input_shape",")","output",":","Q",",","shape",":","(","Batch",",","n_actions",")","Batch","=","ep_num","*","n_agents"]
code: def __init__(self, input_shape, act_dim):
      """inputs: [ s(t), o(t)_a, u(t)_a, agent_a, u(t-1) ], shape: (Batch, input_shape)
      output: Q,   shape: (Batch, n_actions)
      Batch = ep_num * n_agents
      """
      super(CriticModel, self).__init__()
      hid_size = 128
      self.fc1 = nn.Linear(input_shape, hid_size)
      self.fc2 = nn.Linear(hid_size, hid_size)
      self.fc3 = nn.Linear(hid_size, act_dim)
  
imports: import torch.nn
  import torch.nn.functional
  import numpy
  import parl
label_desc: Use image node_id 1 to create a new CriticModel object from inherited base classes: parl with example: obj = CriticModel(input_shape, act_dim)