class_docstr: The Value net (critic) computing the predicted reward from the observations.
  
  :param obs_shapes: The shapes of all observations as a dict.
  :param non_lin: The nonlinear activation to be used.
class_docstr_tok: ["The","Value","net","(","critic",")","computing","the","predicted","reward","from","the","observations",".",":","param","obs_shapes",":","The","shapes","of","all","observations","as","a","dict",".",":","param","non_lin",":","The","nonlinear","activation","to","be","used","."]
docstr: Compute forward pass through the network
  
  :param xx: Input dict
  :return: The computed output of the network
docstr_tok: ["Compute","forward","pass","through","the","network",":","param","xx",":","Input","dict",":","return",":","The","computed","output","of","the","network"]
code: def forward(
      self, xx: Dict[str, torch.Tensor]
  ) -> Dict[str, torch.Tensor]:
      """Compute forward pass through the network
  
      :param xx: Input dict
      :return: The computed output of the network
      """
      return self.perception_net(xx)
  
file_path: maze/tutorials/tutorial_maze_env/part06_struct_env/models/critic.py
imports: from collections import OrderedDict
  from typing import Dict, Union, Sequence
  import torch
  from maze.perception.blocks.feed_forward.dense import DenseBlock
  from maze.perception.blocks.general.concat import ConcatenationBlock
  from maze.perception.blocks.inference import InferenceBlock
  from maze.perception.blocks.output.linear import LinearOutputBlock
  from maze.perception.weight_init import make_module_init_normc
  from torch import nn
label_desc: Use image node_id 2 for calling the SelectionValueNet obj's underlying member method code with example usage: obj.forward(xx) and returns: self