【发布时间】:2019-07-22 06:31:10
【问题描述】:
我想使用load_model('path/to/model.h5') 加载经过训练的模型。
model.h5 的架构是这样的
model = Sequential()
model.add(Dense(128, activation='relu'))
model.add(Dense(64, activation='relu'))
# The last layer is regularized with a custom regularizer
model.add(Dense(10, activation='softmax', W_regularizer=my_reg))
model.save('path/to/model.h5')
,其中包含一个自定义的正则化器my_reg。然后,当我想使用load_model('path/to/model.h5') 加载model.h5 时,它会显示错误消息:
File "myfile.py", line 30,
model = load_model(model_path)
File "/usr/local/lib/python2.7/dist-packages/keras/models.py", line 140, in load_model
model = model_from_config(model_config, custom_objects=custom_objects)
File "/usr/local/lib/python2.7/dist-packages/keras/models.py", line 189, in model_from_config
return layer_from_config(config, custom_objects=custom_objects)
File "/usr/local/lib/python2.7/dist-packages/keras/utils/layer_utils.py", line 34, in layer_from_config
return layer_class.from_config(config['config'])
File "/usr/local/lib/python2.7/dist-packages/keras/models.py", line 1060, in from_config
layer = get_or_create_layer(conf)
File "/usr/local/lib/python2.7/dist-packages/keras/models.py", line 1039, in get_or_create_layer
layer = layer_from_config(layer_data)
File "/usr/local/lib/python2.7/dist-packages/keras/utils/layer_utils.py", line 34, in layer_from_config
return layer_class.from_config(config['config'])
File "/usr/local/lib/python2.7/dist-packages/keras/engine/topology.py", line 899, in from_config
return cls(**config)
File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 705, in __init__
self.W_regularizer = regularizers.get(W_regularizer)
File "/usr/local/lib/python2.7/dist-packages/keras/regularizers.py", line 162, in get
instantiate=True, kwargs=kwargs)
File "/usr/local/lib/python2.7/dist-packages/keras/utils/generic_utils.py", line 30, in get_from_module
str(identifier))
Exception: Invalid regularizer: {}
似乎load_model 不支持带有自定义正则化器的模型。如何加载此模型?如果有人可以帮助我,真的很感激!
【问题讨论】:
-
您是否尝试过添加自定义对象? github.com/keras-team/keras/issues/4871#issuecomment-329392660 即导入正则化器并将其作为自定义对象传递给加载模型
-
感谢 Mitiku 和安全恐惧症。请问我应该如何为
custom_regularizer类重写get_config()方法? github.com/keras-team/keras/issues/4871#issuecomment-329392660 不是很清楚。我应该把custom_regularizer的所有属性都放进去吗?
标签: python python-2.7 tensorflow keras regularized