Closed djinnome closed 2 months ago
Apparently, 8 is not great:
import pyro
import pyro.distributions as dist
population = dist.Uniform(low=150000000.0, high=150000008.001)
works, but
import pyro
import pyro.distributions as dist
population = dist.Uniform(low=150000000.0, high=150000008.000)
results in :
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[21], line 3
1 import pyro
2 import pyro.distributions as dist
----> 3 population = dist.Uniform(low=150000000.0, high=150000008.000)
File ~/.pyenv/versions/pyciemss-main/lib/python3.10/site-packages/pyro/distributions/distribution.py:24, in DistributionMeta.__call__(cls, *args, **kwargs)
22 if result is not None:
23 return result
---> 24 return super().__call__(*args, **kwargs)
File ~/.pyenv/versions/pyciemss-main/lib/python3.10/site-packages/pyro/distributions/torch.py:325, in Uniform.__init__(self, low, high, validate_args)
323 self._unbroadcasted_low = low
324 self._unbroadcasted_high = high
--> 325 super().__init__(low, high, validate_args=validate_args)
File ~/.pyenv/versions/pyciemss-main/lib/python3.10/site-packages/torch/distributions/uniform.py:61, in Uniform.__init__(self, low, high, validate_args)
58 super().__init__(batch_shape, validate_args=validate_args)
60 if self._validate_args and not torch.lt(self.low, self.high).all():
---> 61 raise ValueError("Uniform is not defined when low>= high")
ValueError: Uniform is not defined when low>= high
population = dist.Uniform(low=150000000.0, high=150000008.000000014901161194)
works, but
population = dist.Uniform(low=150000000.0, high=150000008.000000014901161193)
fails
Closing, as this ended up just being a problem with floating point arithmetic. The solution is to not use a distribution between numbers that map to the same binary encoding of a floating point number.
Results in this error: