Reusable continuous-action distribution interface for actor policies. More...
#include <LibtorchActionDistribution.h>
Public Member Functions | |
| LibtorchActionDistribution (const std::string &name, unsigned int num_inputs, unsigned int num_outputs, torch::DeviceType device_type=torch::kCPU, torch::ScalarType scalar_type=torch::kDouble, const std::vector< Real > &output_scaling_factors={}) | |
| Build an action-distribution module for an actor network. | |
| virtual void | initialize (c10::optional< at::Generator > generator=c10::nullopt)=0 |
| Initialize the trainable distribution parameters. | |
| virtual void | reset (const torch::Tensor &input)=0 |
| Refresh cached distribution parameters from the latest actor features. | |
| virtual torch::Tensor | sample (c10::optional< at::Generator > generator=c10::nullopt) const =0 |
| Draw a stochastic action sample in physical units. | |
| virtual torch::Tensor | deterministicAction () const =0 |
| Return the deterministic action used for evaluation. | |
| virtual torch::Tensor | logProbability (const torch::Tensor &action) const =0 |
| Evaluate the log-probability of an action under the current distribution. | |
| virtual torch::Tensor | entropy () const =0 |
| Compute the entropy of the current distribution. | |
| virtual bool | isBounded () const =0 |
| Tell callers whether the distribution enforces explicit action bounds. | |
| void | synchronizeScalingFactorsFromBuffer () |
| Sync cached scaling metadata from the registered buffers after loading state. | |
Protected Member Functions | |
| torch::Tensor | prepareFeatures (const torch::Tensor &input) const |
| Convert actor features to the configured device and scalar type. | |
| torch::Tensor | prepareAction (const torch::Tensor &action) const |
| Convert actions to the configured device and scalar type. | |
| const torch::Tensor & | actionScaleTensor () const |
| Return the registered tensor that stores per-action scaling factors. | |
Protected Attributes | |
| const std::string | _name |
| Module name used for registration and serialization. | |
| const unsigned int | _num_inputs |
| Number of actor features feeding this distribution. | |
| const unsigned int | _num_outputs |
| Number of action dimensions produced by this distribution. | |
| const torch::DeviceType | _device_type |
| Torch device used by this distribution. | |
| const torch::ScalarType | _data_type |
| Torch scalar type used by this distribution. | |
| std::vector< Real > | _output_scaling_factors |
| Cached per-action scaling factors applied in physical units. | |
| torch::Tensor | _action_scale_tensor |
| Registered libtorch buffer holding the per-action scaling factors. | |
Reusable continuous-action distribution interface for actor policies.
Definition at line 27 of file LibtorchActionDistribution.h.
| Moose::LibtorchActionDistribution::LibtorchActionDistribution | ( | const std::string & | name, |
| unsigned int | num_inputs, | ||
| unsigned int | num_outputs, | ||
| torch::DeviceType | device_type = torch::kCPU, |
||
| torch::ScalarType | scalar_type = torch::kDouble, |
||
| const std::vector< Real > & | output_scaling_factors = {} |
||
| ) |
Build an action-distribution module for an actor network.
| name | Module name used for registration and serialization. |
| num_inputs | Number of actor features feeding the distribution. |
| num_outputs | Number of action dimensions produced by the distribution. |
| device_type | Torch device used by the module. |
| scalar_type | Torch scalar type used by the module. |
| output_scaling_factors | Optional per-action scaling applied in physical units. |
Definition at line 52 of file LibtorchActionDistribution.C.
|
inlineprotected |
Return the registered tensor that stores per-action scaling factors.
Definition at line 104 of file LibtorchActionDistribution.h.
Referenced by Moose::LibtorchGaussianActionDistribution::deterministicAction(), Moose::LibtorchBetaActionDistribution::deterministicAction(), Moose::LibtorchGaussianActionDistribution::entropy(), Moose::LibtorchBetaActionDistribution::entropy(), Moose::LibtorchGaussianActionDistribution::logProbability(), Moose::LibtorchBetaActionDistribution::logProbability(), Moose::LibtorchGaussianActionDistribution::sample(), and Moose::LibtorchBetaActionDistribution::sample().
|
pure virtual |
Return the deterministic action used for evaluation.
Implemented in Moose::LibtorchGaussianActionDistribution, and Moose::LibtorchBetaActionDistribution.
|
pure virtual |
Compute the entropy of the current distribution.
Implemented in Moose::LibtorchGaussianActionDistribution, and Moose::LibtorchBetaActionDistribution.
|
pure virtual |
Initialize the trainable distribution parameters.
| generator | Optional random-number generator used for reproducible initialization. |
Implemented in Moose::LibtorchGaussianActionDistribution, and Moose::LibtorchBetaActionDistribution.
|
pure virtual |
Tell callers whether the distribution enforces explicit action bounds.
Implemented in Moose::LibtorchGaussianActionDistribution, and Moose::LibtorchBetaActionDistribution.
|
pure virtual |
Evaluate the log-probability of an action under the current distribution.
| action | Action tensor in physical units. |
Implemented in Moose::LibtorchGaussianActionDistribution, and Moose::LibtorchBetaActionDistribution.
|
protected |
Convert actions to the configured device and scalar type.
| action | Raw action tensor. |
Definition at line 92 of file LibtorchActionDistribution.C.
Referenced by Moose::LibtorchGaussianActionDistribution::logProbability(), and Moose::LibtorchBetaActionDistribution::logProbability().
|
protected |
Convert actor features to the configured device and scalar type.
| input | Raw actor feature tensor. |
Definition at line 81 of file LibtorchActionDistribution.C.
Referenced by Moose::LibtorchGaussianActionDistribution::reset(), and Moose::LibtorchBetaActionDistribution::reset().
|
pure virtual |
Refresh cached distribution parameters from the latest actor features.
| input | Feature tensor coming from the actor body. |
Implemented in Moose::LibtorchGaussianActionDistribution, and Moose::LibtorchBetaActionDistribution.
|
pure virtual |
Draw a stochastic action sample in physical units.
| generator | Optional random-number generator used for sampling. |
Implemented in Moose::LibtorchGaussianActionDistribution, and Moose::LibtorchBetaActionDistribution.
| void Moose::LibtorchActionDistribution::synchronizeScalingFactorsFromBuffer | ( | ) |
Sync cached scaling metadata from the registered buffers after loading state.
Definition at line 73 of file LibtorchActionDistribution.C.
Referenced by Moose::loadLibtorchActorNeuralNetState().
|
protected |
Registered libtorch buffer holding the per-action scaling factors.
Definition at line 120 of file LibtorchActionDistribution.h.
Referenced by actionScaleTensor(), LibtorchActionDistribution(), and synchronizeScalingFactorsFromBuffer().
|
protected |
Torch scalar type used by this distribution.
Definition at line 115 of file LibtorchActionDistribution.h.
Referenced by Moose::LibtorchGaussianActionDistribution::constructDistribution(), Moose::LibtorchBetaActionDistribution::constructDistribution(), LibtorchActionDistribution(), Moose::LibtorchBetaActionDistribution::LibtorchBetaActionDistribution(), prepareAction(), and prepareFeatures().
|
protected |
Torch device used by this distribution.
Definition at line 113 of file LibtorchActionDistribution.h.
Referenced by Moose::LibtorchGaussianActionDistribution::constructDistribution(), Moose::LibtorchBetaActionDistribution::constructDistribution(), LibtorchActionDistribution(), Moose::LibtorchBetaActionDistribution::LibtorchBetaActionDistribution(), prepareAction(), and prepareFeatures().
|
protected |
Module name used for registration and serialization.
Definition at line 107 of file LibtorchActionDistribution.h.
|
protected |
Number of actor features feeding this distribution.
Definition at line 109 of file LibtorchActionDistribution.h.
Referenced by Moose::LibtorchGaussianActionDistribution::constructDistribution(), and Moose::LibtorchBetaActionDistribution::constructDistribution().
|
protected |
Number of action dimensions produced by this distribution.
Definition at line 111 of file LibtorchActionDistribution.h.
Referenced by Moose::LibtorchGaussianActionDistribution::constructDistribution(), Moose::LibtorchBetaActionDistribution::constructDistribution(), and Moose::LibtorchBetaActionDistribution::LibtorchBetaActionDistribution().
|
protected |
Cached per-action scaling factors applied in physical units.
Definition at line 117 of file LibtorchActionDistribution.h.
Referenced by LibtorchActionDistribution(), and synchronizeScalingFactorsFromBuffer().