class_docstr: An exploration that changes a Model's parameters.
  
  Implemented based on:
  [1] https://openai.com/research/better-exploration-with-parameter-noise
  [2] https://arxiv.org/pdf/1706.01905.pdf
  
  At the beginning of an episode, Gaussian noise is added to all weights
  of the model. At the end of the episode, the noise is undone and an action
  diff (pi-delta) is calculated, from which we determine the changes in the
  noise's stddev for the next episode.
class_docstr_tok: ["An","exploration","that","changes","a","Model","'s","parameters",".","Implemented","based","on",":","[","1","]","https",":","\/\/openai.com\/research\/better-exploration-with-parameter-noise","[","2","]","https",":","\/\/arxiv.org\/pdf\/1706.01905.pdf","At","the","beginning","of","an","episode",",","Gaussian","noise","is","added","to","all","weights","of","the","model",".","At","the","end","of","the","episode",",","the","noise","is","undone","and","an","action","diff","(","pi-delta",")","is","calculated",",","from","which","we","determine","the","changes","in","the","noise","'s","stddev","for","the","next","episode","."]
code: def get_exploration_action(
      self,
      *,
      action_distribution: ActionDistribution,
      timestep: Union[TensorType, int],
      explore: Union[TensorType, bool],
  ):
      # Use our sub-exploration object to handle the final exploration
      # action (depends on the algo-type/action-space/etc..).
      return self.sub_exploration.get_exploration_action(
          action_distribution=action_distribution,
          timestep=timestep,
          explore=explore,
      )
  
imports: from gymnasium.spaces import Box, Discrete
  import numpy
  from typing import Optional, TYPE_CHECKING, Union
  from ray.rllib.env.base_env import BaseEnv
  from ray.rllib.models.action_dist import ActionDistribution
  from ray.rllib.models.modelv2 import ModelV2
  from ray.rllib.models.tf.tf_action_dist import Categorical, Deterministic
  from ray.rllib.models.torch.torch_action_dist import TorchCategorical, TorchDeterministic
  from ray.rllib.policy.sample_batch import SampleBatch
  from ray.rllib.utils.annotations import override, PublicAPI
  from ray.rllib.utils.exploration.exploration import Exploration
  from ray.rllib.utils.framework import get_variable, try_import_tf, try_import_torch
  from ray.rllib.utils.from_config import from_config
  from ray.rllib.utils.numpy import softmax, SMALL_NUMBER
  from ray.rllib.utils.typing import TensorType
label_desc: Use image node_id 3 for calling the ParameterNoise obj's underlying member method code with example usage: obj.get_exploration_action() and returns: self