这是indexloc提供的服务,不要输入任何密码
Skip to content

ERROR: Attempting to use a delegate that only supports static-sized tensors with a graph that has dynamic-sized tensors #3523

@nassimus26

Description

@nassimus26

for this code (on colab https://colab.research.google.com/drive/1WKSgxQUSZp4Q5dHeq2HgJvjjVzxJUoqA?usp=sharing) :

cnn = tf.keras.applications.EfficientNetV2B3(
      include_top=False,
      weights='imagenet',
      #input_tensor=None,
      include_preprocessing=True,
      input_shape = (300, 300, 3),
      pooling=None,
      classes = 2
  )
def representative_dataset_gen():
    for i in range(0):
        yield []
converter = tf.lite.TFLiteConverter.from_keras_model(cnn)
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
converter.target_spec.supported_types = [tf.int8]  # extra line missing
#converter.experimental_new_quantizer = True
#converter.experimental_new_dynamic_range_quantizer = True

#converter.inference_output_type = tf.uint8
converter.experimental_new_converter = True
#converter.experimental_mlir_quantizer = True
#converter.experimental_enable_resource_variables = False
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_dataset_gen
tflite_model = converter.convert()
open("cnn.tflite", "wb").write(tflite_model)

And then

!edgetpu_compiler -s cnn.tflite

I am getting :

Edge TPU Compiler version 16.0.384591198
Started a compilation timeout timer of 180 seconds.
ERROR: Attempting to use a delegate that only supports static-sized tensors with a graph that has dynamic-sized tensors.
Compilation failed: Model failed in Tflite interpreter. Please ensure model can be loaded/run in Tflite interpreter.
Compilation child process completed within timeout period.
Compilation failed! 

I am fully aware that the Coral Dev Board team release the EdgeTPU Model version (efficientnet-edgetpu-L_quant_edgetpu.tflite)

But I am not interested in the default generated EdgeTPU file, indeed I want to do something like this :

cnn = tf.keras.applications.EfficientNetV2B3(..pooling=None,..) // no pooling 
x = cnn(cnn.input)
x = layers.AveragePooling2D(pool_size=(5, 5), strides=(5, 5), padding="same")(x)
x = layers.Flatten()(x)
mdl = models.Model(inputs = cnn.input, outputs =x)

And then build the TFLite and the EdgeTPU.

Unfortunately it doesn't seems possible to do this directly on a TFLite or TFliteEdgeTPU model :
For example : how to apply the code above with this : EfficientB3 EDGE_TPU version ?

And it seems the Coral Dev Board Team has rewrite the EfficientNet model from scratch, but they don't explain why or how to import their model implemented here TPU repo

By import I mean how to replace the pretrainded tf.keras.applications.EfficientNetV2B3 with their model ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions