Hironsan / anago

Bidirectional LSTM-CRF and ELMo for Named-Entity Recognition, Part-of-Speech Tagging and so on.
https://anago.herokuapp.com/
MIT License
1.48k stars 371 forks source link

"Improper config format" running with Flask #75

Closed olagus1 closed 6 years ago

olagus1 commented 6 years ago

I'm building a very simple api in Flask for my new Anago models. Loading saved model files in Jupyter notebook works fine, but when running in Flask i get ValueError for the format of the configuration.

Using TensorFlow backend. Traceback (most recent call last): File "app.py", line 22, in <module> preprocessor_file='/Users/ola.gustafsson/virtual_envs/anago/model_download_files/model_data_org/preprocessor.pickle') File "/Users/ola.gustafsson/virtual_envs/flask2/lib/python3.6/site-packages/anago/wrapper.py", line 140, in load self.model = load_model(weights_file, params_file) File "/Users/ola.gustafsson/virtual_envs/flask2/lib/python3.6/site-packages/anago/models.py", line 22, in load_model model = model_from_json(f.read(), custom_objects={'CRF': CRF}) File "/Users/ola.gustafsson/virtual_envs/flask2/lib/python3.6/site-packages/keras/engine/saving.py", line 369, in model_from_json return deserialize(config, custom_objects=custom_objects) File "/Users/ola.gustafsson/virtual_envs/flask2/lib/python3.6/site-packages/keras/layers/__init__.py", line 55, in deserialize printable_module_name='layer') File "/Users/ola.gustafsson/virtual_envs/flask2/lib/python3.6/site-packages/keras/utils/generic_utils.py", line 127, in deserialize_keras_object raise ValueError('Improper config format: ' + str(config)) ValueError: Improper config format: {'char_embedding_dim': 25, 'char_lstm_size': 25, 'char_vocab_size': 148, 'dropout': 0.5, 'fc_dim': 100, 'num_labels': 6, 'use_char': True, 'use_crf': False, 'word_embedding_dim': 300, 'word_lstm_size': 100, 'word_vocab_size': 93331}

olagus1 commented 6 years ago

I trained the model with anago 1.0.6 and tried loading it with 1.0.7 which didn't work. I have now downgraded to make trained models useable again and it appears to work.