# How are action computed from action\_dist\_inputs?

**URL:** <https://discuss.ray.io/t/how-are-action-computed-from-action-dist-inputs/13120>\
**Category:** RLlib\
**Created:** [December 12, 2023, 1:42pm UTC](https://discuss.ray.io/t/how-are-action-computed-from-action-dist-inputs/13120 "2023-12-12T13:42:04Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Finebouche](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/finebouche/32/5417_2.png) [@Finebouche](https://discuss.ray.io/u/Finebouche)\
**Post date:** [December 12, 2023, 1:42pm UTC](https://discuss.ray.io/t/how-are-action-computed-from-action-dist-inputs/13120/1 "2023-12-12T13:42:04Z")

</div>

Hey community,

You can get` action_dist_inputs` from `algo.compute_single_action(obs_vector, policy_id="1", full_fetch=True)`, but it’s not clear to me what happen to this action\_dist\_inputs to compute actual actions. Somehow, this is missing from the documentation and I haven’t been able to find it in the code.

Any help welcome 🙂

---

<div class="post-metadata">

**Author:** ![Finebouche](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/finebouche/32/5417_2.png) [@Finebouche](https://discuss.ray.io/u/Finebouche)\
**Post date:** [December 12, 2023, 2:03pm UTC](https://discuss.ray.io/t/how-are-action-computed-from-action-dist-inputs/13120/2 "2023-12-12T14:03:42Z")

</div>

Hi,

I actually ofund a way using [Catalogs](https://github.com/ray-project/ray/blob/ee10ea692a0fc8863589411c39a7175aae3fdb06/doc/source/rllib/doc_code/catalog_guide.py#L57)

You can retrieve your model catalog from your policy this way 🙂

```auto

model_config = policy.model.config
catalog = model_config.catalog_class(model_config.observation_space, model_config.action_space, model_config.model_config_dict)

```

and then use it to compute actions from algo:

```auto
outputs = algo.compute_single_action(obs_vector, policy_id="prey", full_fetch=True)
action_dist_inputs = outputs[2]["action_dist_inputs"]

action_dist_class = catalog.get_action_dist_cls(framework="torch")
action_dist = action_dist_class.from_logits(action_dist_inputs)
actions = action_dist.sample().numpy()

```

So here the two last line is supposedly what happens after to the `action_dist_inputs`

---

<div class="post-metadata">

**Author:** ![Finebouche](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/finebouche/32/5417_2.png) [@Finebouche](https://discuss.ray.io/u/Finebouche)\
**Post date:** [December 12, 2023, 3:18pm UTC](https://discuss.ray.io/t/how-are-action-computed-from-action-dist-inputs/13120/3 "2023-12-12T15:18:04Z")

</div>

The from\_logits function is describe in this file : [ray/rllib/models/torch/torch\_distributions.py at master · ray-project/ray · GitHub](https://github.com/ray-project/ray/blob/master/rllib/models/torch/torch_distributions.py#L222)
