keras.models load_model中的TypeError('关键字参数不理解:','组')

Posted

技术标签:

【中文标题】keras.models load_model中的TypeError(\'关键字参数不理解:\',\'组\')【英文标题】:TypeError('Keyword argument not understood:', 'groups') in keras.models load_modelkeras.models load_model中的TypeError('关键字参数不理解:','组') 【发布时间】:2020-11-28 04:19:21 【问题描述】:

使用 Google Colab 训练模型后,我使用以下命令(在 Google Colab 内部)下载了它:

model.save('model.h5')
from google.colab import files
files.download('model.h5')

我的问题是,当我尝试使用本地计算机(Google Colab 外部)加载下载的 model.h5 时,出现以下错误:

[输入]

from keras.models import load_model
model = load_model(model.h5)

[输出]

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    model = load_model(filepath = 'saved_model/model2.h5',custom_objects=None,compile=True, )
  File "/home/lucasmirachi/anaconda3/envs/myenviron/lib/python3.8/site-packages/tensorflow/python/keras/saving/save.py", line 184, in load_model
    return hdf5_format.load_model_from_hdf5(filepath, custom_objects, compile)
  File "/home/lucasmirachi/anaconda3/envs/myenviron/lib/python3.8/site-packages/tensorflow/python/keras/saving/hdf5_format.py", line 177, in load_model_from_hdf5
    model = model_config_lib.model_from_config(model_config,
  File "/home/lucasmirachi/anaconda3/envs/myenviron/lib/python3.8/site-packages/tensorflow/python/keras/saving/model_config.py", line 55, in model_from_config
    return deserialize(config, custom_objects=custom_objects)
  File "/home/lucasmirachi/anaconda3/envs/myenviron/lib/python3.8/site-packages/tensorflow/python/keras/layers/serialization.py", line 105, in deserialize
    return deserialize_keras_object(
  File "/home/lucasmirachi/anaconda3/envs/myenviron/lib/python3.8/site-packages/tensorflow/python/keras/utils/generic_utils.py", line 369, in deserialize_keras_object
    return cls.from_config(
  File "/home/lucasmirachi/anaconda3/envs/myenviron/lib/python3.8/site-packages/tensorflow/python/keras/engine/sequential.py", line 397, in from_config
    layer = layer_module.deserialize(layer_config,
  File "/home/lucasmirachi/anaconda3/envs/myenviron/lib/python3.8/site-packages/tensorflow/python/keras/layers/serialization.py", line 105, in deserialize
    return deserialize_keras_object(
  File "/home/lucasmirachi/anaconda3/envs/myenviron/lib/python3.8/site-packages/tensorflow/python/keras/utils/generic_utils.py", line 375, in deserialize_keras_object
    return cls.from_config(cls_config)
  File "/home/lucasmirachi/anaconda3/envs/myenviron/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py", line 655, in from_config
    return cls(**config)
  File "/home/lucasmirachi/anaconda3/envs/myenviron/lib/python3.8/site-packages/tensorflow/python/keras/layers/convolutional.py", line 582, in __init__
    super(Conv2D, self).__init__(
  File "/home/lucasmirachi/anaconda3/envs/myenviron/lib/python3.8/site-packages/tensorflow/python/keras/layers/convolutional.py", line 121, in __init__
    super(Conv, self).__init__(
  File "/home/lucasmirachi/anaconda3/envs/myenviron/lib/python3.8/site-packages/tensorflow/python/training/tracking/base.py", line 456, in _method_wrapper
    result = method(self, *args, **kwargs)
  File "/home/lucasmirachi/anaconda3/envs/myenviron/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py", line 294, in __init__
    generic_utils.validate_kwargs(kwargs, allowed_kwargs)
  File "/home/lucasmirachi/anaconda3/envs/myenviron/lib/python3.8/site-packages/tensorflow/python/keras/utils/generic_utils.py", line 792, in validate_kwargs
    raise TypeError(error_message, kwarg)
TypeError: ('Keyword argument not understood:', 'groups')

有谁知道这个 'groups' 关键字参数不理解是什么? 我没有使用from keras.models,而是尝试使用from tensorflow.keras.models,但没有成功,我得到了同样的错误。 在 Google Colab 和我的本地机器上,我都在运行 Keras '2.4.3'

提前谢谢大家!

【问题讨论】:

你在 colab 中使用 tf.keras 吗? 我试过在 colab 中使用 tf.keras 和只有 keras 并且遇到了同样的问题 您需要在 colab 和您的本地系统中同时使用 kerastf.keras,因为它们不能相互使用。因此,如果您将 colab 与 tf.keras 一起使用,则仅将本地与 tf.keras 一起使用,反之亦然。 我刚刚下载了两个模型(一个使用keras,一个使用tensorflow.keras)并尝试使用from keras.models import load_modelfrom tensorflow.keras.models import load_model 将其加载到我的本地计算机上,并得到相同的错误消息. 我在做同样的事情时得到了同样的错误(在 Colab 中构建和下载,然后尝试在我的本地机器上加载它)。我对两个笔记本都使用了 tensorflow.keras。 【参考方案1】:

我之前评论说我在做同样的事情时遇到了同样的错误。我刚刚通过升级本地机器上的 tensorflow 和 keras 解决了这个问题

pip install --upgrade tensorflow
pip install --upgrade keras

该错误可能是由于 Colab 和本地计算机之间的软件包版本不同。希望这对你也有用。

【讨论】:

升级它们也解决了我的问题!谢谢山姆!! 很高兴能帮上忙!希望您的项目一切顺利! 我在 colab 上遇到了同样的问题,尝试了您的解决方案,但我仍然收到错误消息。另外,我总是在我的项目中使用 tf.keras 是的,这是版本不匹配的问题。在 2.3 版中,“groups”参数被添加到 Conv 层 (tensorflow.org/versions/r2.3/api_docs/python/tf/keras/layers/…)。该参数在 2.2 中不存在。 (tensorflow.org/versions/r2.2/api_docs/python/tf/keras/layers/…) 感谢您让我免于发疯。我有两个 conda 环境。使用的是过时的。【参考方案2】:

我遇到了同样的问题,因为我使用不同版本的 tensorflow 保存和加载模型。我用 tf 2.3.0 保存了一个模型,然后用 tf 2.1.0 加载它。

我确保保存和加载都使用相同的 venv,这为我解决了问题。

【讨论】:

【参考方案3】:

我遇到了同样的问题,所以我在 google-colaboratory 中检查了 tensorflow 和 keras 的版本,发现如下:

我通过在我的 anaconda 环境中使用以下命令安装 tensorflow 和 keras 解决了这个问题:

pip install tensorflow-gpu==2.4.1
pip install Keras==2.4.3

【讨论】:

以上是关于keras.models load_model中的TypeError('关键字参数不理解:','组')的主要内容,如果未能解决你的问题,请参考以下文章

Tensorflow tf.keras.models.load_model() 打开h5文件失败

从预训练模型中移除顶层,迁移学习,张量流(load_model)

Tensorflow (.pb) 格式到 Keras (.h5)

如何加载张量流模型

keras.models.Model.fit 中的“时代”是啥?

TensorFlow Same Model 在 Colab 和本地返回不同的结果