问题
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:
Make sure you have the newest version of
Kerasandtensorflow(which are2.4.4and1.11.0) by running eitherpip install keras tensorfloworconda install keras tensorflow.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