I want to store a small set of useful-to-have constants in my model:

```
ZERO = torch.tensor( float(0.0) )
ONE = torch.tensor( float(0.0) )
INF = torch.tensor( float('inf') )
NAN = torch.tensor( float('nan') )
TRUE = torch.tensor( bool(True) )
```

These are often needed when e.g. perfoming operations like `torch.where(mask, tensor, ZERO)`

What is the best way to store these kinds of constants in my model? I have the follwoing desiderata:

- They are cast to the correct device/dtype when using
`model.to`

- They are collected in a namespace
`model.constants`

- I do not need to copy-paste the whole code in each model every time
- The list is extendable on a per-model basis
- It is fully compatible with JIT

Currently, I am doing

```
class model(nn.Module):
ZERO: torch.Tensor
def __init__(self):
self.register_buffer('ZERO', torch.tensor(0.0))
```

Which satisfies (1, 4, 5) but violates (2, 3). Any better ideas?