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 personalizado do TF1 Hub . Seu principal uso pretendido é no TF1 (ou modo de compatibilidade TF1 no TF2) por meio de sua API hub.Module . Detalhes completos de compatibilidade abaixo .
- O formato TF2 SavedModel nativo. Seu principal uso pretendido é no TF2 por meio das APIs hub.load e hub.KerasLayer . Detalhes completos de compatibilidade abaixo .
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 compatível |
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 compatível |
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 .