我的keras无法加载模型。 “无效的input_shape参数”错误消息

时间:2020-03-10 08:08:35

标签: python keras

我想加载之前训练过的模型。

我的代码就像波纹管一样。

top3_acc = functools.partial(tf.keras.metrics.top_k_categorical_accuracy, k=3)
top3_acc.__name__ = 'top3_acc'

modelName = "/root/workspace/cc_classifier/generatedModels/whole_model.pb"
sdi_model = keras.models.load_model(modelName, custom_objects={'top3_acc': top3_acc})

然后,我的喀拉拉邦返回一条错误消息,例如波纹管。

File "/root/workspace/cc_classifier/scripts/tester/modeltester.py", line 28, in <module>
sdi_model = keras.models.load_model(modelName, custom_objects={'top3_acc': top3_acc})
File "/usr/local/lib/python3.6/dist-packages/keras/engine/saving.py", line 492, in load_wrapper
  return load_function(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/keras/engine/saving.py", line 584, in load_model
 model = _deserialize_model(h5dict, custom_objects, compile)
File "/usr/local/lib/python3.6/dist-packages/keras/engine/saving.py", line 274, in _deserialize_model
      model = model_from_config(model_config, custom_objects=custom_objects)
File "/usr/local/lib/python3.6/dist-packages/keras/engine/saving.py", line 627, in model_from_config
      return deserialize(config, custom_objects=custom_objects)
File "/usr/local/lib/python3.6/dist-packages/keras/layers/__init__.py", line 168, in deserialize
      printable_module_name='layer')
File "/usr/local/lib/python3.6/dist-packages/keras/utils/generic_utils.py", line 147, in deserialize_keras_object
      list(custom_objects.items())))
File "/usr/local/lib/python3.6/dist-packages/keras/engine/network.py", line 1075, in from_config
      process_node(layer, node_data)
File "/usr/local/lib/python3.6/dist-packages/keras/engine/network.py", line 1025, in process_node
      layer(unpack_singleton(input_tensors), **kwargs)
File "/usr/local/lib/python3.6/dist-packages/keras/engine/base_layer.py", line 506, in __call__
      output_shape = self.compute_output_shape(input_shape)
    File "/usr/local/lib/python3.6/dist-packages/keras/engine/network.py", line 612, in compute_output_shape
      str(len(self._input_layers)) + ' tensor inputs.')
    ValueError: Invalid input_shape argument [(None, 1500), (None, 400)]: model has 1 tensor inputs.

我不知道原因。 我该如何解决?

添加

我使用multi-gpu选项训练了我的模型。

model = keras.utils.multi_gpu_model(model, gpus=[0,1,2,3])

此选项会导致此错误吗?

1 个答案:

答案 0 :(得分:0)

对不起。这都是我的错。

我设计了两个输入层,音节和语素。

cnnModelInput = keras.layers.Input(shape=(self.lexicalMaxLength,), name="syllable_input")
posModelInput = keras.layers.Input(shape=(self.morphemeMaxLength,), name="morphemePos_input")

inputFormat = [cnnModelInput, posModelInput]

我在“ posMudelInput”的位置输入“ cnnModelInput”

在规范中,该模型具有两个输入层,但是该模型从未使用过“ posModelInput”。

因此出现了错误消息。

谢谢!!