小编wal*_*ema的帖子

如何从 .h5 文件正确加载带有自定义层的 Keras 模型?

我构建了一个带有自定义层的 Keras 模型,并.h5通过回调将其保存到一个文件中ModelCheckPoint。当我在训练后尝试加载此模型时,出现以下错误消息:

__init__() missing 1 required positional argument: 'pool_size'
Run Code Online (Sandbox Code Playgroud)

这是自定义层及其__init__方法的定义:

__init__() missing 1 required positional argument: 'pool_size'
Run Code Online (Sandbox Code Playgroud)

这就是我将此层添加到我的模型的方式:

class MyMeanPooling(Layer):
    def __init__(self, pool_size, axis=1, **kwargs):
        self.supports_masking = True
        self.pool_size = pool_size
        self.axis = axis
        self.y_shape = None
        self.y_mask = None
        super(MyMeanPooling, self).__init__(**kwargs)
Run Code Online (Sandbox Code Playgroud)

这是我加载模型的方式:

x = MyMeanPooling(globalvars.pool_size)(x)
Run Code Online (Sandbox Code Playgroud)

这些是完整的错误消息:

Traceback (most recent call last):
  File "D:/My Projects/Attention_BLSTM/script3.py", line 9, in <module>
    model = load_model(model_path, custom_objects={'MyMeanPooling': MyMeanPooling})
  File "D:\ProgramData\Anaconda3\envs\tf\lib\site-packages\keras\engine\saving.py", line 419, in load_model
    model = _deserialize_model(f, …
Run Code Online (Sandbox Code Playgroud)

python-3.x keras keras-layer

11
推荐指数
1
解决办法
4184
查看次数

标签 统计

keras ×1

keras-layer ×1

python-3.x ×1