chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
from ray.rllib.algorithms.sac.default_sac_rl_module import DefaultSACRLModule
|
||||
from ray.rllib.core.models.configs import MLPHeadConfig
|
||||
from ray.rllib.core.rl_module.apis.value_function_api import ValueFunctionAPI
|
||||
from ray.rllib.utils.annotations import (
|
||||
OverrideToImplementCustomLogic_CallToSuperRecommended,
|
||||
override,
|
||||
)
|
||||
|
||||
|
||||
class DefaultIQLRLModule(DefaultSACRLModule, ValueFunctionAPI):
|
||||
@override(DefaultSACRLModule)
|
||||
def setup(self):
|
||||
# Setup the `DefaultSACRLModule` to get the catalog.
|
||||
super().setup()
|
||||
|
||||
# Only, if the `RLModule` is used on a `Learner` we build the value network.
|
||||
if not self.inference_only:
|
||||
# Build the encoder for the value function.
|
||||
self.vf_encoder = self.catalog.build_encoder(framework=self.framework)
|
||||
|
||||
# Build the vf head.
|
||||
self.vf = MLPHeadConfig(
|
||||
input_dims=self.catalog.latent_dims,
|
||||
# Note, we use the same layers as for the policy and Q-network.
|
||||
hidden_layer_dims=self.catalog.pi_and_qf_head_hiddens,
|
||||
hidden_layer_activation=self.catalog.pi_and_qf_head_activation,
|
||||
output_layer_activation="linear",
|
||||
output_layer_dim=1,
|
||||
).build(framework=self.framework)
|
||||
|
||||
@override(DefaultSACRLModule)
|
||||
@OverrideToImplementCustomLogic_CallToSuperRecommended
|
||||
def get_non_inference_attributes(self):
|
||||
# Use all of `super`'s attributes and add the value function attributes.
|
||||
return super().get_non_inference_attributes() + ["vf_encoder", "vf"]
|
||||
Reference in New Issue
Block a user