畅游人工智能之海--Keras教程之序列化工具

畅游人工智能之海--Keras教程之序列化工具

CustomObjectScope class

1
tf.keras.utils.custom_object_scope(*args)

将自定义类/函数暴露给Keras反序列化内部组件。在具有custom_object_scope(objects_dict)的作用域下,诸如tf.keras.models.load_modeltf.keras.models.model_from_config之类的Keras方法将能够反序列化已保存配置引用的任何自定义对象(例如,自定义层或度量指标)。

例子

考虑一个自定义的正则化器 my_regularizer

1
2
3
4
5
6
layer = Dense(3, kernel_regularizer=my_regularizer)
config = layer.get_config() # Config contains a reference to `my_regularizer`
...
# Later:
with custom_object_scope({'my_regularizer': my_regularizer}):
layer = Dense.from_config(config)

其中{'my_regularizer': my_regularizer}是函数的参数,都是键值类型的。

get_custom_objects function

1
tf.keras.utils.get_custom_objects()

检索对自定义对象的全局词典的实时引用。首选使用custom_object_scope更新和清除自定义对象,但可以使用get_custom_objects直接访问当前的自定义对象集合。

register_keras_serializable function

1
tf.keras.utils.register_keras_serializable(package="Custom", name=None)

向Keras序列化框架注册对象。该修饰器将修饰后的类或函数注入Keras定制对象字典中,以便无需用户提供的定制对象字典中的条目即可对其进行序列化和反序列化。 它还注入了Keras将调用的函数,以获取对象的可序列化的字符串键。请注意,要进行序列化和反序列化,类必须实现get_config()方法。 函数没有此要求。该对象将在“ package> name”项下注册,其中名称为name,如果未通过,则默认为对象名。

下面两个虽然简单,但是是重要的函数

serialize_keras_object function

1
tf.keras.utils.serialize_keras_object(instance)

将Keras对象序列化为JSON兼容的表示形式。

deserialize_keras_object function

1
2
3
tf.keras.utils.deserialize_keras_object(
identifier, module_objects=None, custom_objects=None, printable_module_name="object"
)

将Keras对象的序列化形式转换回实际对象。