SystemError: неизвестный код операции при загрузке модели с помощью Keras - PullRequest
1 голос
/ 29 мая 2020

Я обучил модель на Kaggle по этой ссылке: https://www.kaggle.com/dcosmin/shufflenet-with-keras используя исходный код из этой ссылки: https://github.com/opconty/keras-shufflenetV2/blob/master/shufflenetv2.py. После завершения обучения я сохранил модель под названием ShuffleNetV2.h5 и файл weights.hdf5. Когда я пытаюсь запустить код на своем компьютере:

# model = tf.keras.models.load_model('L-CNN v4.0.h5')
# model = tf.keras.models.load_model('MobileNetV2 - 131 - 2.0.h5')
model = tf.keras.models.load_model('ShuffleNetV2 - 131.h5')

model.compile(loss='categorical_crossentropy', 
              optimizer='adam',
              metrics=['accuracy'])

Мне нужно запустить этот код в последней версии Keras и Tensorflow с Python 3.7 - Мне нужно запустить его на Raspberry Число Пи. Ошибка:

 SystemError                               Traceback (most recent call last)
<ipython-input-15-914c5b8863a1> in <module>
      1 #model = tf.keras.models.load_model('L-CNN v4.0.h5')
      2 #model = tf.keras.models.load_model('MobileNetV2 - 131 - 2.0.h5')
----> 3 model = tf.keras.models.load_model('ShuffleNetV2 - 131.h5')
      4 #model=load_model('ShuffleNetV2 - 131.h5')
      5 model.compile(loss='categorical_crossentropy', 

C:\ProgramData\Anaconda3\envs\Computer Vision\lib\site-packages\tensorflow_core\python\keras\saving\save.py in load_model(filepath, custom_objects, compile)
    144   if (h5py is not None and (
    145       isinstance(filepath, h5py.File) or h5py.is_hdf5(filepath))):
--> 146     return hdf5_format.load_model_from_hdf5(filepath, custom_objects, compile)
    147 
    148   if isinstance(filepath, six.string_types):

C:\ProgramData\Anaconda3\envs\Computer Vision\lib\site-packages\tensorflow_core\python\keras\saving\hdf5_format.py in load_model_from_hdf5(filepath, custom_objects, compile)
    166     model_config = json.loads(model_config.decode('utf-8'))
    167     model = model_config_lib.model_from_config(model_config,
--> 168                                                custom_objects=custom_objects)
    169 
    170     # set weights

C:\ProgramData\Anaconda3\envs\Computer Vision\lib\site-packages\tensorflow_core\python\keras\saving\model_config.py in model_from_config(config, custom_objects)
     53                     '`Sequential.from_config(config)`?')
     54   from tensorflow.python.keras.layers import deserialize  # pylint: disable=g-import-not-at-top
---> 55   return deserialize(config, custom_objects=custom_objects)
     56 
     57 

C:\ProgramData\Anaconda3\envs\Computer Vision\lib\site-packages\tensorflow_core\python\keras\layers\serialization.py in deserialize(config, custom_objects)
    104       module_objects=globs,
    105       custom_objects=custom_objects,
--> 106       printable_module_name='layer')

C:\ProgramData\Anaconda3\envs\Computer Vision\lib\site-packages\tensorflow_core\python\keras\utils\generic_utils.py in deserialize_keras_object(identifier, module_objects, custom_objects, printable_module_name)
    301             custom_objects=dict(
    302                 list(_GLOBAL_CUSTOM_OBJECTS.items()) +
--> 303                 list(custom_objects.items())))
    304       with CustomObjectScope(custom_objects):
    305         return cls.from_config(cls_config)

C:\ProgramData\Anaconda3\envs\Computer Vision\lib\site-packages\tensorflow_core\python\keras\engine\network.py in from_config(cls, config, custom_objects)
    935     """
    936     input_tensors, output_tensors, created_layers = reconstruct_from_config(
--> 937         config, custom_objects)
    938     model = cls(inputs=input_tensors, outputs=output_tensors,
    939                 name=config.get('name'))

C:\ProgramData\Anaconda3\envs\Computer Vision\lib\site-packages\tensorflow_core\python\keras\engine\network.py in reconstruct_from_config(config, custom_objects, created_layers)
   1901       if layer in unprocessed_nodes:
   1902         for node_data in unprocessed_nodes.pop(layer):
-> 1903           process_node(layer, node_data)
   1904 
   1905   input_tensors = []

C:\ProgramData\Anaconda3\envs\Computer Vision\lib\site-packages\tensorflow_core\python\keras\engine\network.py in process_node(layer, node_data)
   1849       if not isinstance(input_tensors, dict) and len(flat_input_tensors) == 1:
   1850         input_tensors = flat_input_tensors[0]
-> 1851       output_tensors = layer(input_tensors, **kwargs)
   1852 
   1853       # Update node index map.

C:\ProgramData\Anaconda3\envs\Computer Vision\lib\site-packages\tensorflow_core\python\keras\engine\base_layer.py in __call__(self, inputs, *args, **kwargs)
    771                     not base_layer_utils.is_in_eager_or_tf_function()):
    772                   with auto_control_deps.AutomaticControlDependencies() as acd:
--> 773                     outputs = call_fn(cast_inputs, *args, **kwargs)
    774                     # Wrap Tensors in `outputs` in `tf.identity` to avoid
    775                     # circular dependencies.

C:\ProgramData\Anaconda3\envs\Computer Vision\lib\site-packages\tensorflow_core\python\keras\layers\core.py in call(self, inputs, mask, training)
    844     with backprop.GradientTape(watch_accessed_variables=True) as tape,\
    845         variable_scope.variable_creator_scope(_variable_creator):
--> 846       result = self.function(inputs, **kwargs)
    847     self._check_variables(created_variables, tape.watched_variables())
    848     return result

C:\ProgramData\Anaconda3\envs\Computer Vision\lib\site-packages\tensorflow_core\python\keras\layers\core.py in channel_shuffle(x)

SystemError: unknown opcode

Мне действительно нужно исправить эту несовместимость. Можете ли вы сказать мне, нужно ли мне что-то изменить в Kaggle, чтобы тренировать его снова, или я не знаю ..

1 Ответ

0 голосов
/ 29 мая 2020

Эта ошибка возникает из-за разницы в версиях. Вы можете решить эту проблему, сохранив архитектуру в виде кода, а веса - в h5. Это будет совместимо для разных версий. Это было поднято в репозитории Keras. https://github.com/keras-team/keras/issues/9595

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...