AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 79565183
Accepted
Shinobu HUYUGIRI
Shinobu HUYUGIRI
Asked: 2025-04-10 03:22:18 +0800 CST2025-04-10 03:22:18 +0800 CST 2025-04-10 03:22:18 +0800 CST

Como posso converter um modelo "BigGAN" do TensorFlow 1 no Kaggle para o formato TensorFlow Lite?

  • 772

Como posso converter um modelo "BigGAN" do TensorFlow 1 no Kaggle para o formato TensorFlow Lite?

https://www.tensorflow.org/hub/tutorials/biggan_generation_with_tf_hub?hl=ja

Estou tentando implementar o seguinte código-fonte para definir um modelo TensorFlow.Keras e convertê-lo para o formato TensorFlow Lite, mas quando tento definir um modelo na API de função usando a camada criada com hub.KerasLayer, ocorre a seguinte exceção:

E também não sei como especificar os argumentos para model.build().

Este modelo requer múltiplas entradas, então não consegui usar a solução para construir um modelo usando a API Sequencial mostrada na URL abaixo. Como posso salvar um modelo com formato de entrada (1, Nenhum, Nenhum, 3) com Nenhum definido como 256?

Existem boas soluções?

Código-fonte não funcional

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
from tensorflow.compat.v1 import keras
from tensorflow.compat.v1.keras import layers
import tensorflow_hub as hub

input_truncation = keras.Input(shape=(), name='truncation')
input_y = keras.Input(shape=(1000, ), name='y')
input_z = keras.Input(shape=(128, ), name='z')
hub_layer = hub.KerasLayer(
            "https://www.kaggle.com/models/deepmind/biggan/TensorFlow1/128/2",
            trainable=False,
            signature="default", 
            signature_outputs_as_dict=True,
            input_shape = [[], [1000], [128]],
            output_shape = [128, 128, 3],
        )

### -->> TypeError occur HERE
output = hub_layer([input_truncation, input_y, input_z])
### <<-- TypeError occur HERE

model = tf.keras.models.Model(inputs=[input_truncation, input_y, input_z], outputs=[output])

### -->> How to build this model 
model.build([1], [1, 1000], [1, 128])
### <<-- How to build this model

model.summary()
model.save("biggan-128")

converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)

a exceção que ocorreu

 TypeError
in user code:

    File "/home/shino/anaconda3/envs/movenet/lib/python3.10/site-packages/tensorflow_hub/keras_layer.py", line 242, in call  *
        result = f()

    TypeError: pruned(truncation, y, z) takes 0 positional arguments, got 1.
  File "/tmp/__autograph_generated_fileedgegq8b.py", line 74, in tf__call
    ag__.if_stmt(ag__.not_(ag__.ld(self)._has_training_argument), if_body_3, else_body_3, get_state_3, set_state_3, ('result', 'training'), 1)
  File "/tmp/__autograph_generated_fileedgegq8b.py", line 37, in if_body_3
    result = ag__.converted_call(ag__.ld(f), (), None, fscope)
TypeError: pruned(truncation, y, z) takes 0 positional arguments, got 1.

During handling of the above exception, another exception occurred:

  File "/tmp/__autograph_generated_fileedgegq8b.py", line 37, in if_body_3
    result = ag__.converted_call(ag__.ld(f), (), None, fscope)
  File "/tmp/__autograph_generated_fileedgegq8b.py", line 74, in tf__call
    ag__.if_stmt(ag__.not_(ag__.ld(self)._has_training_argument), if_body_3, else_body_3, get_state_3, set_state_3, ('result', 'training'), 1)
  File "/home/shino/sandbox/python/biggan/biggan_export.py", line 21, in <module>
    output = hub_layer([input_truncation, input_y, input_z])
TypeError: in user code:

    File "/home/shino/anaconda3/envs/movenet/lib/python3.10/site-packages/tensorflow_hub/keras_layer.py", line 242, in call  *
        result = f()

    TypeError: pruned(truncation, y, z) takes 0 positional arguments, got 1.

requisitos.txt

absl-py==2.2.1
astunparse==1.6.3
cachetools==5.5.2
certifi==2025.1.31
charset-normalizer==3.4.1
coloredlogs==15.0.1
flatbuffers==1.12
gast==0.4.0
google-auth==2.38.0
google-auth-oauthlib==0.4.6
google-pasta==0.2.0
grpcio==1.71.0
h5py==3.13.0
humanfriendly==10.0
idna==3.10
keras==2.9.0
Keras-Preprocessing==1.1.2
libclang==18.1.1
Markdown==3.7
MarkupSafe==3.0.2
mpmath==1.3.0
numpy==1.26.4
oauthlib==3.2.2
onnx==1.14.1
onnx-graphsurgeon==0.5.7
onnx2tf==1.26.9
onnxruntime==1.21.0
opt_einsum==3.4.0
packaging==24.2
protobuf==3.20.3
psutil==7.0.0
pyasn1==0.6.1
pyasn1_modules==0.4.2
requests==2.32.3
requests-oauthlib==2.0.0
rsa==4.9
six==1.17.0
sng4onnx==1.0.4
sympy==1.13.3
tensorboard==2.9.0
tensorboard-data-server==0.6.1
tensorboard-plugin-wit==1.8.1
tensorflow==2.9.0
tensorflow-estimator==2.9.0
tensorflow-hub==0.16.1
tensorflow-io-gcs-filesystem==0.37.1
tensorflow-neuron==1.0
termcolor==3.0.0
tf-keras==2.14.1
tf2onnx==1.13.0
typing_extensions==4.13.0
urllib3==2.3.0
Werkzeug==3.1.3
wrapt==1.17.2
tensorflow
  • 1 1 respostas
  • 21 Views

1 respostas

  • Voted
  1. Best Answer
    Shinobu HUYUGIRI
    2025-04-11T22:40:59+08:002025-04-11T22:40:59+08:00

    Eu resolvi sozinho.

    Modificando o código-fonte da seguinte forma, conseguimos converter com sucesso o BigGAN para o formato TensorFlow Lite.

    Obrigado.

    import tensorflow as tf
    from tensorflow import keras
    from tensorflow.keras import layers
    import tensorflow_hub as hub
    
    model_url = "https://www.kaggle.com/models/deepmind/biggan/TensorFlow1/128/2"
    input_truncation = keras.Input(batch_shape=(), name='truncation')
    input_y = keras.Input(shape=(1000, ), name='y')
    input_z = keras.Input(shape=(120, ), name='z')
    hub_layer = hub.KerasLayer(
                model_url,
                trainable=False,
                signature="default", 
                signature_outputs_as_dict=True,
            )
    
    inputs = dict(y=input_y, z=input_z, truncation=input_truncation)
    output = hub_layer(inputs)
    model = tf.keras.models.Model(inputs=[input_truncation, input_y, input_z], outputs=[output])
    model.build(([1], [1, 1000], [1, 120]))
    model.summary()
    model.save("biggan-128")
    
    converter = tf.lite.TFLiteConverter.from_keras_model(model)
    tflite_model = converter.convert()
    open("biggan-128.tflite", "wb").write(tflite_model)
    
    • 0

relate perguntas

  • ValueError ao adicionar tf.keras.metrics.Precision para modelar métricas no TensorFlow

  • model.fit dá erro com conjunto de dados tensorflow criado com tf.data.experimental.make_csv_dataset

  • Não é possível instalar o tensorflow versão 2.3.0 (distribuição não encontrada)

  • treinamento do modelo xception keras - tamanho do lote 32 dá erro, mas funciona para tamanho do lote = 16

  • O que significa o argumento input_shape para Flatten()?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve