Heads#
This module provides various head layers that convert network outputs into probability distributions over actions. These heads are commonly used in reinforcement learning to model stochastic or deterministic policies.
Descriptions#
GaussianHead#
Splits the input into mean and log-variance to form a Normal distribution.
Returns a sample (action), its log-probability, and the underlying distribution.
SquashedGaussianHead#
Outputs a Tanh-squashed Gaussian distribution for bounded action spaces.
Supports both training (stochastic sampling) and evaluation (mean of samples) modes.
Returns the action, log-probability (if training), and distribution.
CategoricalHead#
Converts logits into a Categorical distribution for discrete actions.
Uses softmax to derive probabilities.
Returns a sampled action, its log-probability, and the distribution.
DeterministicHead#
Pass-through head for deterministic policies.
Directly returns the input as the action.
Classes#
- class objectrl.nets.layers.heads.GaussianHead(n: int)[source]#
Bases:
ModuleOutputs a Gaussian distribution from a given input tensor. The input is split into mean and log-variance components which define a Normal distribution. The class returns the sampled action, its log-probability, and the distribution.
- Parameters:
n (int) – The dimensionality of the output action space.
- _n#
Dimensionality of the action space.
- Type:
int
- __init__(n: int) None[source]#
Initializes the Gaussian head with the specified action dimensionality.
- Parameters:
n (int) – Dimensionality of the action space.
- Returns:
None
- forward(x: Tensor) dict[str, Any][source]#
Forward pass to compute the Gaussian distribution and sample an action.
- Parameters:
x (Tensor) – Input tensor containing concatenated mean and log-variance.
- Returns:
Dictionary containing the sampled action, its log-probability, mean, and distribution
- Return type:
dict
- class objectrl.nets.layers.heads.SquashedGaussianHead(n: int, upper_clamp: float = -2.0, n_samples: int = 100)[source]#
Bases:
ModuleOutputs a Tanh-squashed Gaussian distribution, commonly used for bounded actions in reinforcement learning.
- Parameters:
n (int) – Dimensionality of the action space.
upper_clamp (float) – Upper clamp on log-variance values.
n_samples (int) – Number of samples used in evaluation mode.
Attributes – _n (int): Dimensionality of the action space. _upper_clamp (float): Upper clamp for log-variance. _n_samples (int): Number of samples for evaluation.
- __init__(n: int, upper_clamp: float = -2.0, n_samples: int = 100) None[source]#
Initialize internal Module state, shared by both nn.Module and ScriptModule.
- forward(x: Tensor, is_training: float = True) dict[str, Any][source]#
Forward pass producing a squashed Gaussian distribution.
- Parameters:
x (Tensor) – Input tensor with mean and log-variance concatenated.
is_training (bool) – Whether in training mode (stochastic sampling) or not.
- Returns:
Dictionary containing the sampled action, its log-probability, and the distribution.
- Return type:
dict
- class objectrl.nets.layers.heads.CategoricalHead(n: int)[source]#
Bases:
ModuleOutputs a Categorical distribution for discrete action spaces.
- Parameters:
n (int) – Number of categories (discrete actions).
- Returns:
Dictionary containing the sampled action, its log-probability, and the distribution.
- Return type:
dict
- class objectrl.nets.layers.heads.DeterministicHead(n: int)[source]#
Bases:
ModulePass-through head for deterministic outputs.
- Parameters:
n (int) – Dimensionality of the output.
- Returns:
Dictionary containing the action.
- Return type:
dict
Usage Example#
from nets.layers.heads import GaussianHead
head = GaussianHead(n=4)
output = head(torch.randn(1, 8)) # 4 for mean, 4 for logvar
print(output["action"].shape) # torch.Size([1, 4])
Notes#
These heads abstract the output distribution from policy networks.
Useful in actor-critic methods for exploration and entropy regularization.
SquashedGaussianHeadensures outputs stay in [-1, 1] usingTanhTransform.