Unknown initializer: GlorotUniform when loading Keras model

46,700

Solution 1

I ran into the same issue. After changing:

from tensorflow import keras

to:

import keras

life is once again worth living.

Solution 2

I fixed the problem:

Before:

from keras.models import load_model
classifierLoad = load_model('model/modeltest.h5')

Works for me

import tensorflow as tf 
classifierLoad = tf.keras.models.load_model('model/modeltest.h5')

Solution 3

Wow I, just spent 6 Hours of my life trying to figure this out.. Dmitri posted a solution to this here: I trained a keras model on google colab. Now not able to load it locally on my system.

I'm just basically reposting it here because it worked for me.

This looks like some kind of a serialization bug in keras. If you wrap your load_model with the below CustomObjectScope thingy... all should work..

import keras
from keras.models import load_model
from keras.utils import CustomObjectScope
from keras.initializers import glorot_uniform

with CustomObjectScope({'GlorotUniform': glorot_uniform()}):
        model = load_model('imdb_mlp_model.h5')

Solution 4

Changing

from keras.models import load_model

to

from tensorflow.keras.models import load_model

solved my problem!

To eliminate errors, import all things directly from Keras or TensorFlow. Mixing both of them in same project may result in problems.

Solution 5

Something that helped me which wasn't in any of the answers:

custom_objects={'GlorotUniform': glorot_uniform()}

Share:
46,700
Dhruvin modi
Author by

Dhruvin modi

Updated on January 12, 2021

Comments

  • Dhruvin modi
    Dhruvin modi over 3 years

    I trained my CNN (VGG) through google colab and generated .h5 file. Now problem is, I can predict my output successfully through google colab but when i download that .h5 trained model file and try to predict output on my laptop, I am getting error when loading the model.

    Here is the code:

    import tensorflow as tf
    from tensorflow import keras
    import h5py
    
    # Initialization
    
    loaded_model = keras.models.load_model('./train_personCount_model.h5')
    

    And the error:

    ValueError: Unknown initializer: GlorotUniform