当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.keras.models.clone_model用法及代码示例


克隆函数或顺序Model 实例。

用法

tf.keras.models.clone_model(
    model, input_tensors=None, clone_function=None
)

参数

  • model Model 的实例(可以是函数模型或顺序模型)。
  • input_tensors 用于构建模型的输入张量或 InputLayer 对象的可选列表。如果未提供,将创建新的 Input 对象。
  • clone_function 可调用以用于克隆目标模型中的每一层(InputLayer 实例除外)。它将要克隆的层实例作为参数,并返回要在模型副本中使用的相应层实例。如果未指定,则此可调用默认为以下序列化/反序列化函数:lambda layer:layer.__class__.from_config(layer.get_config())。通过传递自定义可调用对象,您可以自定义模型副本,例如通过包装某些感兴趣的层(例如,您可能希望将所有 LSTM 实例替换为等效的 Bidirectional(LSTM(...)) 实例)。

返回

  • Model 的一个实例,使用新实例化的权重在新输入张量之上再现原始模型的行为。如果自定义 clone_function 修改图层,则克隆模型的行为可能与原始模型不同。

模型克隆类似于在新输入上调用模型,不同之处在于它创建新层(并因此产生新权重)而不是共享现有层的权重。

请注意,clone_model 不会保留模型内共享对象的唯一性(例如,附加到两个不同层的单个变量将恢复为两个单独的变量)。

例子:

# 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())

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.keras.models.clone_model。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。