在将模型转换为tflite时遇到此错误
“”“ 标准TensorFlow Lite运行时不支持该模型中的某些运算符,并且TensorFlow无法识别该运算符。如果您有针对他们的自定义实现,则可以使用--allow_custom_ops或通过在调用tf.lite.TFLiteConverter()时设置allow_custom_ops = True来禁用此错误。这是您正在使用的内置运算符的列表:ABS,ADD,CONV_2D,MAX_POOL_2D,MUL,RELU,SOFTMAX,SQUEEZE,SUB。这是您需要自定义实现的运算符的列表:AdjustContrastv2,AdjustHue,AdjustSaturation,RandomUniform。 “”“
该如何解决? 张量流版本:1.13.1
答案 0 :(得分:0)
您可以通过选择TF ops直接使用TF ops。 我已经确认可以通过FlexDelegate使用AdjustContrastv2,AdjustHue和AdjustSaturation。 https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc#L35
要使用this feature,您需要使用TF 2.4或更高版本。由于TF 2.4尚不可用,因此您需要使用tf-nightly版本。
仅供参考,关于从TF1到TF2的迁移,请检查https://www.tensorflow.org/guide/migrate
答案 1 :(得分:0)
您可以尝试添加以下行以指定模型可以在内置的TF Lite和TF中使用操作。
converter.experimental_new_converter=True
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS,
tf.lite.OpsSet.SELECT_TF_OPS]
或者更好的是,您应该重写内置TF中可用的操作所不支持的TF Lite中所不支持的操作。