Совместимость моделей для TF1/TF2

Форматы моделей TF Hub

TF Hub предлагает повторно используемые части моделей, которые можно загружать обратно, дорабатывать и, возможно, переобучать в программе TensorFlow. Они бывают двух разных форматов:

Формат модели можно найти на странице модели на tfhub.dev . Загрузка/вывод модели, точная настройка или создание могут не поддерживаться в TF1/2 в зависимости от форматов модели.

Совместимость формата TF1 Hub

Операция Режим совместимости TF1/TF1 в TF2 [1] ТФ2
Загрузка/вывод Полностью поддерживается ( полное руководство по загрузке формата TF1 Hub )
m = hub.Module(handle)
outputs = m(inputs)
Рекомендуется использовать Hub.load
m = hub.load(handle)
outputs = m.signatures["sig"](inputs)
или Hub.KerasLayer
m = hub.KerasLayer(handle, signature="sig")
outputs = m(inputs)
Тонкая настройка Полностью поддерживается ( полное руководство по точной настройке формата TF1 Hub )
m = hub.Module(handle,
               trainable=True,
               tags=["train"]*is_training)
outputs = m(inputs)
Примечание. Модули, которым не нужен отдельный граф поездов, не имеют тега поезда.
Не поддерживается
Создание Полностью поддерживается (см. полное руководство по созданию формата TF1 Hub )
Примечание. Формат TF1 Hub ориентирован на TF1 и лишь частично поддерживается в TF2. Рассмотрите возможность создания сохраненной модели TF2.
Не поддерживается

Совместимость сохраненной модели TF2

Не поддерживается до TF1.15.

Операция Режим совместимости TF1.15/TF1 в TF2 [1] ТФ2
Загрузка/вывод Используйте либо Hub.load
m = hub.load(handle)
outputs = m(inputs)
, либо Hub.KerasLayer
m = hub.KerasLayer(handle)
outputs = m(inputs)
Полностью поддерживается ( полное руководство по загрузке TF2 SavedModel ). Используйте либо Hub.load
m = hub.load(handle)
outputs = m(inputs)
, либо Hub.KerasLayer
m = hub.KerasLayer(handle)
outputs = m(inputs)
Тонкая настройка Поддерживается для Hub.KerasLayer, используемого в tf.keras.Model при обучении с помощью Model.fit() или обучении в оценщике, чей model_fn оборачивает модель в соответствии с пользовательским руководством model_fn .
Примечание. Hub.KerasLayer не заполняет коллекции графов, как это делали старые API tf.compat.v1.layers или Hub.Module.
Полностью поддерживается ( полное руководство по тонкой настройке TF2 SavedModel ). Используйте либо Hub.load:
m = hub.load(handle)
outputs = m(inputs, training=is_training)
, либо Hub.KerasLayer:
m =  hub.KerasLayer(handle, trainable=True)
outputs = m(inputs)
Создание API TF2 tf.saved_model.save() можно вызвать из режима совместимости. Полностью поддерживается (см. полное руководство по созданию TF2 SavedModel ).

[1] «Режим совместимости TF1 в TF2» относится к комбинированному эффекту импорта TF2 с import tensorflow.compat.v1 as tf и запуском tf.disable_v2_behavior() , как описано в руководстве по миграции TensorFlow .