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 和您的本地系统中同时使用 keras
或 tf.keras
,因为它们不能相互使用。因此,如果您将 colab 与 tf.keras
一起使用,则仅将本地与 tf.keras
一起使用,反之亦然。
我刚刚下载了两个模型(一个使用keras
,一个使用tensorflow.keras
)并尝试使用from keras.models import load_model
和from 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)