code: def test_clipped_ppo_loss_discrete_hybridize():
      loss_fn = ClippedPPOLossDiscrete(
          num_actions=2, clip_likelihood_ratio_using_epsilon=0.2
      )
      loss_fn.initialize()
      loss_fn.hybridize()
      actions = mx.nd.array((0, 1, 0))
      advantages = mx.nd.array((-2, 2, 1))
      old_policy_probs = mx.nd.array(
          ((0.7, 0.3), (0.2, 0.8), (0.4, 0.6))
      )
      new_policy_probs = mx.nd.array(
          ((0.9, 0.1), (0.2, 0.8), (0.4, 0.6))
      )
      clip_param_rescaler = mx.nd.array((1,))
  
      loss = loss_fn(
          new_policy_probs,
          actions,
          old_policy_probs,
          clip_param_rescaler,
          advantages,
      )
      assert loss[0] == mx.nd.array((-0.142857153,))
  
imports: import mxnet
  import numpy
  import os
  import pytest
  from scipy import stats
  import sys
  from rl_coach.architectures.head_parameters import PPOHeadParameters
  from rl_coach.architectures.mxnet_components.heads.ppo_head import CategoricalDist, MultivariateNormalDist, DiscretePPOHead, ClippedPPOLossDiscrete, ClippedPPOLossContinuous, PPOHead
  from rl_coach.agents.clipped_ppo_agent import ClippedPPOAlgorithmParameters, ClippedPPOAgentParameters
  from rl_coach.spaces import SpacesDefinition, DiscreteActionSpace
label_desc: Use image node_id 17 for calling a global function with example usage: test_clipped_ppo_loss_discrete_hybridize() without return types