appeler / ethnicolr

Predict Race and Ethnicity Based on the Sequence of Characters in a Name
http://ethnicolr.readthedocs.io
MIT License
233 stars 65 forks source link

ValueError from pred functions #95

Closed logrkn closed 4 months ago

logrkn commented 4 months ago

Running examples from documentation gives ValueError: Could not interpret initializer identifier: {'class_name': 'Orthogonal', 'config': {'gain': 1.0, 'seed': None}}.

import pandas as pd

names = [
            {"last": "smith", "first": "john", "true_race": "GreaterEuropean,British"},
            {
                "last": "zhang",
                "first": "simon",
                "true_race": "Asian,GreaterEastAsian,EastAsian",
            },
        ]
df = pd.DataFrame(names)

from ethnicolr import pred_wiki_ln, pred_wiki_name

odf = pred_wiki_ln(df,'last', conf_int=0.9)
['Asian,GreaterEastAsian,EastAsian', 'Asian,GreaterEastAsian,Japanese', 'Asian,IndianSubContinent', 'GreaterAfrican,Africans', 'GreaterAfrican,Muslim', 'GreaterEuropean,British', 'GreaterEuropean,EastEuropean', 'GreaterEuropean,Jewish', 'GreaterEuropean,WestEuropean,French', 'GreaterEuropean,WestEuropean,Germanic', 'GreaterEuropean,WestEuropean,Hispanic', 'GreaterEuropean,WestEuropean,Italian', 'GreaterEuropean,WestEuropean,Nordic']

odf
lima-1thing commented 4 months ago

Had similar error:

/Users/lima/Library/Python/3.9/lib/python/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020
  warnings.warn(
Namespace(input='***********.csv', output='output-pred-census2010.csv', last='name_last', iter=100, conf=1.0, year=2010)
/Users/lima/Library/Python/3.9/lib/python/site-packages/keras/src/layers/core/embedding.py:90: UserWarning: Argument `input_length` is deprecated. Just remove it.
  warnings.warn(
/Users/lima/Library/Python/3.9/lib/python/site-packages/keras/src/layers/core/embedding.py:93: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.
  super().__init__(**kwargs)
Traceback (most recent call last):
  File "/usr/local/bin/pred_census_ln", line 33, in <module>
    sys.exit(load_entry_point('ethnicolr==0.9.6', 'console_scripts', 'pred_census_ln')())
  File "/Users/lima/Library/Python/3.9/lib/python/site-packages/ethnicolr/pred_census_ln.py", line 68, in main
    rdf = pred_census_ln(df, args.last, args.year, args.iter, args.conf)
  File "/Users/lima/Library/Python/3.9/lib/python/site-packages/ethnicolr/pred_census_ln.py", line 45, in pred_census_ln
    rdf = cls.transform_and_pred(df=df,
  File "/Users/lima/Library/Python/3.9/lib/python/site-packages/ethnicolr/ethnicolr_class.py", line 108, in transform_and_pred
    cls.model = load_model(MODEL)
  File "/Users/lima/Library/Python/3.9/lib/python/site-packages/keras/src/saving/saving_api.py", line 183, in load_model
    return legacy_h5_format.load_model_from_hdf5(
  File "/Users/lima/Library/Python/3.9/lib/python/site-packages/keras/src/legacy/saving/legacy_h5_format.py", line 133, in load_model_from_hdf5
    model = saving_utils.model_from_config(
  File "/Users/lima/Library/Python/3.9/lib/python/site-packages/keras/src/legacy/saving/saving_utils.py", line 85, in model_from_config
    return serialization.deserialize_keras_object(
  File "/Users/lima/Library/Python/3.9/lib/python/site-packages/keras/src/legacy/saving/serialization.py", line 495, in deserialize_keras_object
    deserialized_obj = cls.from_config(
  File "/Users/lima/Library/Python/3.9/lib/python/site-packages/keras/src/models/sequential.py", line 333, in from_config
    layer = saving_utils.model_from_config(
  File "/Users/lima/Library/Python/3.9/lib/python/site-packages/keras/src/legacy/saving/saving_utils.py", line 85, in model_from_config
    return serialization.deserialize_keras_object(
  File "/Users/lima/Library/Python/3.9/lib/python/site-packages/keras/src/legacy/saving/serialization.py", line 504, in deserialize_keras_object
    deserialized_obj = cls.from_config(cls_config)
  File "/Users/lima/Library/Python/3.9/lib/python/site-packages/keras/src/layers/rnn/lstm.py", line 669, in from_config
    return cls(**config)
  File "/Users/lima/Library/Python/3.9/lib/python/site-packages/keras/src/layers/rnn/lstm.py", line 463, in __init__
    cell = LSTMCell(
  File "/Users/lima/Library/Python/3.9/lib/python/site-packages/keras/src/layers/rnn/lstm.py", line 122, in __init__
    self.recurrent_initializer = initializers.get(recurrent_initializer)
  File "/Users/lima/Library/Python/3.9/lib/python/site-packages/keras/src/initializers/__init__.py", line 118, in get
    raise ValueError(
ValueError: Could not interpret initializer identifier: {'class_name': 'Orthogonal', 'config': {'gain': 1.0, 'seed': None}}
suriyan commented 4 months ago

It seems this issue is caused by incompatibility with the latest TensorFlow version (2.16.1). Please install the previous version with the following command:

pip install -U tensorflow==2.15.1
suriyan commented 4 months ago

Alternatively, now you can fix this issue by update ethnicolr to the latest version by running:

pip install -U ethnicolr