es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Distribución personalizada de acciones Ray[RLlib] (TorchDeterministic)

Sabemos que en el caso de una Box (acción continua) en el Espacio de Acción, la correspondiente Distribución de Acción es DiagGaussian (distribución de probabilidad).

Sin embargo, quiero usar TorchDeterministic (Distribución de Acción que devuelve directamente los valores de entrada).

Este es el código, tomado de https://github.com/ray-project/ray/blob/a91ddbdeb98e81741beeeb5c17902cab1e771105/rllib/models/torch/torchactiondist.py#L372:

class TorchDeterministic(TorchDistributionWrapper):
“””Distribución de acción que devuelve los valores de entrada directamente.
Esto es similar a DiagGaussian con desviación estándar cero (por lo tanto, solo
    requiere los valores “promedio” como salida de la RN).
    “””

    @override(ActionDistribution)
    def deterministic_sample(self) -> TensorType:
        return self.inputs

    @override(TorchDistributionWrapper)
    def sampled_action_logp(self) -> TensorType:
        return torch.zeros((self.inputs.size()[0], ), dtype=torch.float32)

    @override(TorchDistributionWrapper)
    def sample(self) -> TensorType:
        return self.deterministic_sample()

    @staticmethod
    @override(ActionDistribution)
    def required_mode_output_shape(
            action_space: gym.Space,
            model_config: ModelConfigDict) -> Union[int, np.ndarray]:
        return np.prod(action_space.shape)

Con las importaciones adecuadas, copié y pegué el contenido de esta clase en un archivo llamado customactiondist.py.

Lo importé con:

from custom_action_dist import TorchDeterministic

registre mi distribución de acción personalizada con:

ModelCatalog.register_custom_action_dist(“my_custom_action_dist”, TorchDeterministic)

y en la configuración especifico:

“custom_action_dist”: “my_custom_action_dist”

Sin embargo, estoy recibiendo el siguiente error:

“Archivo” /home/user/DRL/lib/python3.8/site-packages/ray/rllib/models/torch/torch_action_dist.py”, línea 38, en logp
    return self.dist.log_prob(actions)
AtributoError: el objeto ‘TorchDeterministic’ no tiene atributo ‘dist'”

Parece que debo especificar una distribución de probabilidad.

¿Alguien puede ayudarme, decirme cuál es esa?

¡Gracias y esperando su respuesta!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que necesitas especificar una distribución de probabilidad para tu clase TorchDeterministic. Puedes usar el módulo torch.distributions para encontrar la distribución adecuada para tus necesidades. Por ejemplo, si estás trabajando con un espacio de acción continuo, podrías usar la distribución Normal.

Comments are closed.