code: def mlp_actor_critic(
      x,
      a,
      hidden_sizes=(64, 64),
      activation=tf.tanh,
      output_activation=None,
      policy=None,
      action_space=None,
  ):
      # default policy builder depends on action space
      if policy is None and isinstance(action_space, Box):
          policy = mlp_gaussian_policy
      elif policy is None and isinstance(action_space, Discrete):
          policy = mlp_categorical_policy
  
      with tf.variable_scope("pi"):
          pi, logp, logp_pi = policy(
              x,
              a,
              hidden_sizes,
              activation,
              output_activation,
              action_space,
          )
      with tf.variable_scope("v"):
          v = tf.squeeze(
              mlp(x, list(hidden_sizes) + [1], activation, None), axis=1
          )
      return pi, logp, logp_pi, v
  
file_path: spinningup/spinup/algos/tf1/ppo/core.py
imports: import numpy
  import tensorflow
  import scipy.signal
  from gym.spaces import Box, Discrete
label_desc: Use image node_id 13 for calling a global function with example usage: mlp_actor_critic(x, a, hidden_sizes, activation, output_activation, policy, action_space) and returns: pi,  logp,  logp_pi,  v