docstr: :param (mx.nd or mx.sym) F: backend api (mx.sym if block has been hybridized).
  :param x: middleware embedding
  :return: policy parameters/probabilities
docstr_tok: [":","param","(","mx.nd","or","mx.sym",")","F",":","backend","api","(","mx.sym","if","block","has","been","hybridized",")",".",":","param","x",":","middleware","embedding",":","return",":","policy","parameters\/probabilities"]
code: def hybrid_forward(
      self, F: ModuleType, x: nd_sym_type
  ) -> nd_sym_type:
      """
      :param (mx.nd or mx.sym) F: backend api (mx.sym if block has been hybridized).
      :param x: middleware embedding
      :return: policy parameters/probabilities
      """
      return self.net(x)
  
imports: from typing import List, Tuple, Union
  from types import ModuleType
  import math
  import mxnet
  from mxnet.gluon import nn
  from rl_coach.base_parameters import AgentParameters
  from rl_coach.core_types import ActionProbabilities
  from rl_coach.spaces import SpacesDefinition, BoxActionSpace, DiscreteActionSpace
  from rl_coach.utils import eps
  from rl_coach.architectures.mxnet_components.heads.head import Head, HeadLoss, LossInputSchema, NormalizedRSSInitializer
  from rl_coach.architectures.mxnet_components.heads.head import LOSS_OUT_TYPE_LOSS, LOSS_OUT_TYPE_REGULARIZATION
  from rl_coach.architectures.mxnet_components.utils import hybrid_clip, broadcast_like
label_desc: Use image node_id 2 for calling the PPOHead obj's underlying member method code with example usage: obj.hybrid_forward(F, x) and returns: self