# How to disable auto-encoding?

**URL:** <https://discuss.ray.io/t/how-to-disable-auto-encoding/2289>\
**Category:** RLlib\
**Created:** [May 26, 2021, 5:58am UTC](https://discuss.ray.io/t/how-to-disable-auto-encoding/2289 "2021-05-26T05:58:35Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Astariul](https://avatars.discourse-cdn.com/v4/letter/a/2acd7d/32.png) [@Astariul](https://discuss.ray.io/u/Astariul)\
**Post date:** [May 26, 2021, 5:58am UTC](https://discuss.ray.io/t/how-to-disable-auto-encoding/2289/1 "2021-05-26T05:58:35Z")

</div>

My observation space is a `spaces.Discrete` .

`rllib` automatically one-hot encode this observation, as mentioned in the [docs](https://docs.ray.io/en/master/rllib-models.html#built-in-preprocessors)

* * *

**How can I disable this behavior ?**

The tensor my model receives has `[batch, discrete_size]` shape, but I want `[batch]` shape.

---

<div class="post-metadata">

**Author:** ![kai](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/kai/32/3380_2.png) [@kai](https://discuss.ray.io/u/kai)\
**Post date:** [May 26, 2021, 7:48am UTC](https://discuss.ray.io/t/how-to-disable-auto-encoding/2289/2 "2021-05-26T07:48:44Z")

</div>

cc @sven1977 might be related to [[rllib] provides a flattened observation, instead of the original, for custom\_loss() · Issue #7896 · ray-project/ray · GitHub](https://github.com/ray-project/ray/issues/7896)

---

<div class="post-metadata">

**Author:** ![sven1977](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/sven1977/32/53_2.png) [@sven1977](https://discuss.ray.io/u/sven1977)\
**Post date:** [May 26, 2021, 11:15am UTC](https://discuss.ray.io/t/how-to-disable-auto-encoding/2289/3 "2021-05-26T11:15:48Z")

</div>

Hey @Astariul , could you try this?

```auto
from ray.rllib.models.preprocessors import NoPreprocessor
from ray.rllib.models.catalog import ModelCatalog

ModelCatalog.register_custom_preprocessor("noprep", NoPreprocessor)

# in your config:
config:
    model:
        custom_preprocessor: "noprep"

```

---

<div class="post-metadata">

**Author:** ![Astariul](https://avatars.discourse-cdn.com/v4/letter/a/2acd7d/32.png) [@Astariul](https://discuss.ray.io/u/Astariul)\
**Post date:** [May 26, 2021, 11:59pm UTC](https://discuss.ray.io/t/how-to-disable-auto-encoding/2289/4 "2021-05-26T23:59:17Z")

</div>

I’m having the following warning and error :

> 2021-05-26 20:11:41,390 WARNING catalog.py:620 – DeprecationWarning: Custom preprocessors are deprecated, since they sometimes conflict with the built-in preprocessors for handling complex observation spaces. Please use wrapper classes around your environment instead of preprocessors.

> Traceback (most recent call last):  
> File “train\_ip.py”, line 362, in   
> trainer = ppo.PPOTrainer(config=config)  
> File “/home/remondn/miniconda3/envs/rllib/lib/python3.6/site-packages/ray/rllib/agents/trainer\_template.py”, line 121, in **init**  
> Trainer. **init** (self, config, env, logger\_creator)  
> File “/home/remondn/miniconda3/envs/rllib/lib/python3.6/site-packages/ray/rllib/agents/trainer.py”, line 516, in **init**  
> super(). **init** (config, logger\_creator)  
> File “/home/remondn/miniconda3/envs/rllib/lib/python3.6/site-packages/ray/tune/trainable.py”, line 98, in **init**  
> self.setup(copy.deepcopy(self.config))  
> File “/home/remondn/miniconda3/envs/rllib/lib/python3.6/site-packages/ray/rllib/agents/trainer.py”, line 707, in setup  
> self.\_init(self.config, self.env\_creator)  
> File “/home/remondn/miniconda3/envs/rllib/lib/python3.6/site-packages/ray/rllib/agents/trainer\_template.py”, line 153, in \_init  
> num\_workers=self.config[“num\_workers”])  
> File “/home/remondn/miniconda3/envs/rllib/lib/python3.6/site-packages/ray/rllib/agents/trainer.py”, line 789, in \_make\_workers  
> logdir=self.logdir)  
> File “/home/remondn/miniconda3/envs/rllib/lib/python3.6/site-packages/ray/rllib/evaluation/worker\_set.py”, line 98, in **init**  
> spaces=spaces,  
> File “/home/remondn/miniconda3/envs/rllib/lib/python3.6/site-packages/ray/rllib/evaluation/worker\_set.py”, line 357, in \_make\_worker  
> spaces=spaces,  
> File “/home/remondn/miniconda3/envs/rllib/lib/python3.6/site-packages/ray/rllib/evaluation/rollout\_worker.py”, line 517, in **init**  
> policy\_dict, policy\_config)  
> File “/home/remondn/miniconda3/envs/rllib/lib/python3.6/site-packages/ray/rllib/evaluation/rollout\_worker.py”, line 1128, in \_build\_policy\_map  
> obs\_space, merged\_conf.get(“model”))  
> File “/home/remondn/miniconda3/envs/rllib/lib/python3.6/site-packages/ray/rllib/models/catalog.py”, line 626, in get\_preprocessor\_for\_space  
> observation\_space, options)  
> File “/home/remondn/miniconda3/envs/rllib/lib/python3.6/site-packages/ray/rllib/models/preprocessors.py”, line 40, in **init**  
> self.\_size = int(np.product(self.shape))  
> **TypeError: int() argument must be a string, a bytes-like object or a number, not ‘NoneType’**

* * *

My workaround for now is to simply process the tensor from one-hot encoding back to class label :

```python
x= torch.argmax(x, dim=1)

```
