- 
                Notifications
    
You must be signed in to change notification settings  - Fork 46
 
Closed
Description
I noticed in the source code there are some calls of generator.randint(1, 1e9)  1e9 is converted to float but in python 3.12 calling float in randint causes an error
System information.
- Python 3.12
 - tf_keras 2.17.0
 - tensorflow 2.17.0
 
Running with env variable: TF_USE_LEGACY_KERAS=1
Simple steps to reproduce:
import tensorflow as tf
tf.keras.utils.set_random_seed(10)
from tensorflow.keras.initializers import VarianceScaling
vs = VarianceScaling()
vs((3, 3))
Error log
Traceback (most recent call last):
  File "/mnt/g/PycharmProjects/testing/first.py", line 8, in <module>
    vs((3, 3))
  File "/home/user/miniconda3/envs/t2/lib/python3.12/site-packages/tf_keras/src/initializers/initializers.py", line 648, in __call__
    return self._generate_init_val(shape=shape, dtype=dtype, nonce=nonce)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/miniconda3/envs/t2/lib/python3.12/site-packages/tf_keras/src/initializers/initializers.py", line 663, in _generate_init_val
    return self._random_generator.truncated_normal(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/miniconda3/envs/t2/lib/python3.12/site-packages/tf_keras/src/backend.py", line 2134, in truncated_normal
    self._maybe_init()
  File "/home/user/miniconda3/envs/t2/lib/python3.12/site-packages/tf_keras/src/backend.py", line 1976, in _maybe_init
    self._seed = self._create_seed(self._seed)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/miniconda3/envs/t2/lib/python3.12/site-packages/tf_keras/src/backend.py", line 2032, in _create_seed
    return _SEED_GENERATOR.generator.randint(1, 1e9)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/miniconda3/envs/t2/lib/python3.12/random.py", line 336, in randint
    return self.randrange(a, b+1)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/miniconda3/envs/t2/lib/python3.12/random.py", line 312, in randrange
    istop = _index(stop)
            ^^^^^^^^^^^^
TypeError: 'float' object cannot be interpreted as an integer