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

。_饼干妹妹 提交于 2019-12-10 14:36:30

问题


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.


回答1:


  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.



来源:https://stackoverflow.com/questions/53051274/i-trained-a-keras-model-on-google-colab-now-not-able-to-load-it-locally-on-my-s

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!