Compatibilidade do modelo para TF1/TF2

Formatos de modelo TF Hub

O TF Hub oferece peças de modelo reutilizáveis ​​que podem ser carregadas de volta, construídas e possivelmente treinadas novamente em um programa TensorFlow. Eles vêm em dois formatos diferentes:

O formato do modelo pode ser encontrado na página do modelo em tfhub.dev . O carregamento/inferência , o ajuste fino ou a criação do modelo podem não ser suportados no TF1/2 com base nos formatos do modelo.

Compatibilidade do formato TF1 Hub

Operação Modo de compatibilidade TF1/TF1 em TF2 [1] TF2
Carregando/Inferência Totalmente suportado ( guia completo de carregamento do formato TF1 Hub )
m = hub.Module(handle)
outputs = m(inputs)
É recomendado usar hub.load
m = hub.load(handle)
outputs = m.signatures["sig"](inputs)
ou hub.KerasLayer
m = hub.KerasLayer(handle, signature="sig")
outputs = m(inputs)
Afinação Totalmente suportado ( guia completo de ajuste fino do formato TF1 Hub )
m = hub.Module(handle,
               trainable=True,
               tags=["train"]*is_training)
outputs = m(inputs)
Nota: módulos que não precisam de um gráfico de trem separado não possuem uma tag de trem.
Não suportado
Criação Totalmente suportado (veja o guia completo de criação de formato TF1 Hub )
Nota: O formato TF1 Hub é voltado para TF1 e é apenas parcialmente suportado no TF2. Considere criar um TF2 SavedModel.
Não suportado

Compatibilidade do TF2 SavedModel

Não suportado antes de TF1.15.

Operação Modo de compatibilidade TF1.15/TF1 em TF2 [1] TF2
Carregando/Inferência Use hub.load
m = hub.load(handle)
outputs = m(inputs)
ou hub.KerasLayer
m = hub.KerasLayer(handle)
outputs = m(inputs)
Totalmente suportado ( guia completo de carregamento do TF2 SavedModel ). Use hub.load
m = hub.load(handle)
outputs = m(inputs)
ou hub.KerasLayer
m = hub.KerasLayer(handle)
outputs = m(inputs)
Afinação Compatível com um hub.KerasLayer usado em tf.keras.Model quando treinado com Model.fit() ou treinado em um Estimator cujo model_fn envolve o Modelo de acordo com o model_fn guide personalizado .
Nota: hub.KerasLayer não preenche coleções de gráficos como as antigas APIs tf.compat.v1.layers ou hub.Module faziam.
Totalmente suportado ( guia completo de ajuste fino do TF2 SavedModel ). Use hub.load:
m = hub.load(handle)
outputs = m(inputs, training=is_training)
ou hub.KerasLayer:
m =  hub.KerasLayer(handle, trainable=True)
outputs = m(inputs)
Criação A API do TF2 tf.saved_model.save() pode ser chamada no modo de compatibilidade. Totalmente suportado (consulte o guia completo de criação do TF2 SavedModel )

[1] "Modo de compatibilidade TF1 no TF2" refere-se ao efeito combinado de importar TF2 com import tensorflow.compat.v1 as tf e executar tf.disable_v2_behavior() conforme descrito no guia de migração do TensorFlow .