get_config
方法Model.get_config()
返回 Model
的配置。
配置是一个 Python 字典(可序列化),包含对象(在本例中为 Model
)的配置。这允许 Model
稍后从此配置中重新实例化(无需其训练权重)。
请注意,get_config()
并不保证每次调用时都返回字典的新副本。如果调用者想要修改返回的字典,则应复制该字典。
建议子类化 Model
的开发者覆盖此方法,并继续从 super(MyModel, self).get_config()
更新字典,以提供此 Model
的正确配置。默认配置将返回初始化参数的配置字典(如果它们是基本类型)。在需要为子类化模型实现自定义 get_config()
的情况下,将引发 NotImplementedError
。
返回值
包含此 Model
配置的 Python 字典。
from_config
方法Model.from_config(config, custom_objects=None)
根据其配置创建层。
此方法是 get_config
的反向操作,能够从配置字典中实例化相同的层。它不处理层连接(由网络处理),也不处理权重(由 set_weights
处理)。
参数
get_config
的输出。返回值
层实例。
clone_model
函数tf_keras.models.clone_model(model, input_tensors=None, clone_function=None)
克隆 Functional 或 Sequential Model
实例。
模型克隆类似于在新的输入上调用模型,除了它创建新的层(以及新的权重)而不是共享现有层的权重。
请注意,clone_model
不会保留模型中共享对象的唯一性(例如,附加到两个不同层的单个变量将被恢复为两个单独的变量)。
参数
Model
实例(可以是 Functional 模型或 Sequential 模型)。Input
对象。InputLayer
实例)的可调用对象。它将要克隆的层实例作为参数,并返回模型副本中要使用的相应层实例。如果未指定,此可调用对象将成为以下序列化/反序列化函数:lambda layer: layer.__class__.from_config(layer.get_config())
。通过传递自定义可调用对象,您可以自定义模型的副本,例如,通过包装某些感兴趣的层(例如,您可能希望将所有 LSTM
实例替换为等效的 Bidirectional(LSTM(...))
实例)。默认为 None
。返回值
一个 Model
实例,它在新的输入张量之上复制原始模型的行为,并使用新实例化的权重。如果自定义的 clone_function
修改了层,则克隆的模型可能与原始模型的行为不同。
示例
# Create a test Sequential model.
model = keras.Sequential([
keras.Input(shape=(728,)),
keras.layers.Dense(32, activation='relu'),
keras.layers.Dense(1, activation='sigmoid'),
])
# Create a copy of the test model (with freshly initialized weights).
new_model = clone_model(model)
请注意,子类化模型无法克隆,因为其内部层结构未知。为了在子类化模型的情况下实现与 clone_model
等效的功能,只需确保模型类实现了 get_config()
(以及可选的 from_config()
),然后调用
new_model = model.__class__.from_config(model.get_config())