tf.keras.models.clone_model
| Просмотреть исходный код на GitHub |
Клонирование функциональной или последовательной Model модели.
tf.keras.models.clone_model(
model, input_tensors=None, clone_function=None
)
Клонирование модели похоже на вызов модели с новыми входными данными, за исключением того, что оно создаёт новые слои (и, следовательно, новые веса), а не использует веса существующих слоёв.
Обратите внимание, что clone_model не будет сохранять уникальность общих объектов внутри модели (например, отдельная переменная, прикреплённая к двум различным слоям, будет восстановлена как две отдельные переменные).
| Аргументы | |
|---|---|
model | Экземпляр Model (может быть функциональной моделью или последовательной моделью). |
input_tensors | необязательный список входных тензоров или объектов InputLayer для построения модели. Если не указан, будут созданы новые объекты Input . |
clone_function | Функция, используемая для клонирования каждого слоя в целевой модели (кроме экземпляров InputLayer). Она принимает в качестве аргумента экземпляр слоя для клонирования и возвращает соответствующий экземпляр слоя для использования в копии модели. Если не указано, эта функция по умолчанию — следующая функция сериализации/десериализации: lambda layer: layer.__class__.from_config(layer.get_config()). Передавая пользовательскую функцию, вы можете настроить копию модели, например, обернув определённые интересующие вас слои (например, вы можете заменить все экземпляры LSTM эквивалентными экземплярами Bidirectional(LSTM(...))). |
| Возвращаемое значение | |
|---|---|
Экземпляр 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())
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/keras/models/clone_model