Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

I trained a keras model on google colab. Now not able to load it locally on my system.

with open('2model.json','r') as f:
json = f.read()
model = model_from_json(json)
model.load_weights("color_tensorflow_real_mode.h5")

I trained a keras model on google colab. Now not able to load it locally on my system. Getting this error: ValueError: Unknown initializer: GlorotUniform

How to solve this?? Every time I make a model on colab and try loading it locally I am unable to do so. Getting this error message:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-17-c3ed162a8277> in <module>()
----> 1 model = model_from_json(json)
      2 model.load_weights("color_tensorflow_real_mode.h5")

~\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\saving.py in model_from_json(json_string, custom_objects)
    349   config = json.loads(json_string)
    350   from tensorflow.python.keras.layers import deserialize  # pylint: disable=g-import-not-at-top
--> 351   return deserialize(config, custom_objects=custom_objects)
    352 
    353 

~\Anaconda3\lib\site-packages\tensorflow\python\keras\layers\serialization.py in deserialize(config, custom_objects)
     62       module_objects=globs,
     63       custom_objects=custom_objects,
---> 64       printable_module_name='layer')

~\Anaconda3\lib\site-packages\tensorflow\python\keras\utils\generic_utils.py in deserialize_keras_object(identifier, module_objects, custom_objects, printable_module_name)
    171             custom_objects=dict(
    172                 list(_GLOBAL_CUSTOM_OBJECTS.items()) +
--> 173                 list(custom_objects.items())))
    174       with CustomObjectScope(custom_objects):
    175         return cls.from_config(config['config'])

~\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\network.py in from_config(cls, config, custom_objects)
   1290     # First, we create all layers and enqueue nodes to be processed
   1291     for layer_data in config['layers']:
-> 1292       process_layer(layer_data)
   1293     # Then we process nodes in order of layer depth.
   1294     # Nodes that cannot yet be processed (if the inbound node

~\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\network.py in process_layer(layer_data)
   1276       from tensorflow.python.keras.layers import deserialize as deserialize_layer  # pylint: disable=g-import-not-at-top
   1277 
-> 1278       layer = deserialize_layer(layer_data, custom_objects=custom_objects)
   1279       created_layers[layer_name] = layer
   1280 

~\Anaconda3\lib\site-packages\tensorflow\python\keras\layers\serialization.py in deserialize(config, custom_objects)
     62       module_objects=globs,
     63       custom_objects=custom_objects,
---> 64       printable_module_name='layer')

~\Anaconda3\lib\site-packages\tensorflow\python\keras\utils\generic_utils.py in deserialize_keras_object(identifier, module_objects, custom_objects, printable_module_name)
    173                 list(custom_objects.items())))
    174       with CustomObjectScope(custom_objects):
--> 175         return cls.from_config(config['config'])
    176     else:
    177       # Then `cls` may be a function returning a class.

~\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\base_layer.py in from_config(cls, config)
   1615         A layer instance.
   1616     """
-> 1617     return cls(**config)
   1618 
   1619 

~\Anaconda3\lib\site-packages\tensorflow\python\keras\layers\convolutional.py in __init__(self, filters, kernel_size, strides, padding, data_format, dilation_rate, activation, use_bias, kernel_initializer, bias_initializer, kernel_regularizer, bias_regularizer, activity_regularizer, kernel_constraint, bias_constraint, **kwargs)
    464         activation=activations.get(activation),
    465         use_bias=use_bias,
--> 466         kernel_initializer=initializers.get(kernel_initializer),
    467         bias_initializer=initializers.get(bias_initializer),
    468         kernel_regularizer=regularizers.get(kernel_regularizer),

~\Anaconda3\lib\site-packages\tensorflow\python\keras\initializers.py in get(identifier)
    153     return None
    154   if isinstance(identifier, dict):
--> 155     return deserialize(identifier)
    156   elif isinstance(identifier, six.string_types):
    157     config = {'class_name': str(identifier), 'config': {}}

~\Anaconda3\lib\site-packages\tensorflow\python\keras\initializers.py in deserialize(config, custom_objects)
    145       module_objects=globals(),
    146       custom_objects=custom_objects,
--> 147       printable_module_name='initializer')
    148 
    149 

~\Anaconda3\lib\site-packages\tensorflow\python\keras\utils\generic_utils.py in deserialize_keras_object(identifier, module_objects, custom_objects, printable_module_name)
    161       cls = module_objects.get(class_name)
    162       if cls is None:
--> 163         raise ValueError('Unknown ' + printable_module_name + ': ' + class_name)
    164     if hasattr(cls, 'from_config'):
    165       arg_spec = tf_inspect.getfullargspec(cls.from_config)

ValueError: Unknown initializer: GlorotUniform

Stackoverflow is asking me to add details while I have none to add. Or I am not sure what to add. Please help.

like image 640
Nitin Sethi Avatar asked Oct 29 '18 17:10

Nitin Sethi


People also ask

How do I save a model from colab to local machine?

For files on your local machine, we'll use the user interface in Google Colab. In the upper left hand corner, select the folder icon to see the list of available folders in a given directory. Here, there is an icon for uploading a file. Select this icon, and then select wherever the weights are on your local machine.

How do I load a model from h5 file in Colab?

Copy the HDF5 file into your google drive and load them into your Colab notebook. Then fetch the data and labels from the dataset present in the file. Create 'on-the-fly' augmentation as below and feed it to your network.


2 Answers

  1. Make sure you have the newest version of Keras and tensorflow (which are 2.4.4 and 1.11.0) by running either pip install keras tensorflow or conda install keras tensorflow.

  2. In case it is Google Colab that uses deprecated objects, you may need to use custom objects:

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

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

Not sure if this is your case though.

like image 190
Dmitrii Avatar answered Oct 17 '22 15:10

Dmitrii


load the model using

 from tensorflow.keras.models import load_model

instead of

from keras.models import load_model

I tried using many methods but this is the one that finally worked!

like image 3
Niranjan Mangotri Avatar answered Oct 17 '22 14:10

Niranjan Mangotri