class_docstr: the network for generating non-deterministic (Gaussian distributed) action from the state input 
class_docstr_tok: ["the","network","for","generating","non-deterministic","(","Gaussian","distributed",")","action","from","the","state","input"]
docstr: generate action with state for calculating gradients;
  eval_noise_scale: as the trick of target policy smoothing, for generating noisy actions.
docstr_tok: ["generate","action","with","state","for","calculating","gradients",";","eval_noise_scale",":","as","the","trick","of","target","policy","smoothing",",","for","generating","noisy","actions","."]
code: def evaluate(self, state, eval_noise_scale):
      """
      generate action with state for calculating gradients;
      eval_noise_scale: as the trick of target policy smoothing, for generating noisy actions.
      """
      state = state.astype(np.float32)
      action = self.forward(state)
  
      action = self.action_range * action
  
      # add noise
      normal = Normal(0, 1)
      eval_noise_clip = 2 * eval_noise_scale
      noise = normal.sample(action.shape) * eval_noise_scale
      noise = tf.clip_by_value(noise, -eval_noise_clip, eval_noise_clip)
      action = action + noise
      return action
  
imports: import argparse
  import os
  import random
  import time
  import gym
  import matplotlib.pyplot
  import numpy
  import tensorflow
  import tensorflow_probability
  import tensorlayer
  from tensorlayer.layers import Dense
  from tensorlayer.models import Model
label_desc: Use image node_id 3 for calling the PolicyNetwork obj's underlying member method code with example usage: obj.evaluate(state, eval_noise_scale) and returns: action