Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow EDGE#TPU编译器错误:没有';无法找到内置操作码的op';调整最近邻的大小';版本';3';定制蛋黄酱_Tensorflow_Tensorflow Lite_Tpu_Google Coral - Fatal编程技术网

Tensorflow EDGE#TPU编译器错误:没有';无法找到内置操作码的op';调整最近邻的大小';版本';3';定制蛋黄酱

Tensorflow EDGE#TPU编译器错误:没有';无法找到内置操作码的op';调整最近邻的大小';版本';3';定制蛋黄酱,tensorflow,tensorflow-lite,tpu,google-coral,Tensorflow,Tensorflow Lite,Tpu,Google Coral,我已经对我的模型进行了深色训练,并使用它将我的深色权重转换为h5 为了量化,我用泄漏的relu替换了relu。 然后,我的模型通过使用tf nightly成功地转换为tflite模型 但是,我无法通过调整最近邻错误将模型解析为edgetpu。 据我所知,在中支持调整最近邻居的大小 那么为什么会发生这种错误呢? 有办法解决吗 以下是我的tflite转换代码: import tensorflow as tf import numpy as np import sys def representat

我已经对我的模型进行了深色训练,并使用它将我的深色权重转换为h5

为了量化,我用泄漏的relu替换了relu。 然后,我的模型通过使用tf nightly成功地转换为tflite模型

但是,我无法通过调整最近邻错误将模型解析为edgetpu。 据我所知,在中支持调整最近邻居的大小 那么为什么会发生这种错误呢? 有办法解决吗

以下是我的tflite转换代码:

import tensorflow as tf
import numpy as np
import sys

def representative_dataset_gen():
    for _ in range(250):
        yield [np.random.uniform(0.0, 1.0, size=(1, 416, 416, 3)).astype(np.float32)]

if len(sys.argv) != 3:
    print(f"Usage: {sys.argv[0]} <keras-model> <output-filename>")
    sys.exit(1)

model_fn = sys.argv[1]
out_fn = sys.argv[2]

# Convert and apply full integer quantization
converter = tf.compat.v1.lite.TFLiteConverter.from_keras_model_file(model_fn)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8,
                                       tf.lite.OpsSet.SELECT_TF_OPS]
#converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
# Set inputs and outputs of network to 8-bit unsigned integer
converter.inference_input_type = tf.uint8
converter.inference_output_type = tf.uint8
converter.representative_dataset = representative_dataset_gen
tflite_model = converter.convert()

open(sys.argv[2], "wb").write(tflite_model)
将tensorflow导入为tf
将numpy作为np导入
导入系统
def代表_数据集_gen():
对于范围内的(250):
产量[np.random.uniform(0.0,1.0,size=(1416416,3)).aType(np.float32)]
如果len(sys.argv)!=三:
打印(f“用法:{sys.argv[0]}”)
系统出口(1)
模型_fn=sys.argv[1]
out_fn=sys.argv[2]
#转换并应用全整数量化
converter=tf.compat.v1.lite.TFLiteConverter.from\u keras\u model\u文件(model\u fn)
converter.optimizations=[tf.lite.Optimize.DEFAULT]
converter.target\u spec.supported\u ops=[tf.lite.OpsSet.TFLITE\u BUILTINS\u INT8,
tf.lite.optset.SELECT\u tf\u OPS]
#converter.target\u spec.supported\u ops=[tf.lite.optset.TFLITE\u BUILTINS\u INT8]
#将网络的输入和输出设置为8位无符号整数
converter.inference\u input\u type=tf.uint8
converter.inference\u输出类型=tf.uint8
converter.representative\u dataset=representative\u dataset\u gen
tflite_model=converter.convert()
打开(sys.argv[2],“wb”).write(tflite_模型)

我来自coral团队,我正计划亲自研究yolov3型号,只是还没有足够的带宽:) 以下是我收集到的一些提示:

  • 用户在将
    leaky_relu
    更改为
    relu
    后能够成功编译模型,尽管准确性可能会降低。我知道你提到过这一点,但我想把它放在列表上,供其他用户参考

  • 其次,我怀疑您每晚都在使用
    tf
    或某种更新的tf版本进行转换?如果是这样,我建议降级到tf2.2,编译器还不支持相同ops的某些较新版本

  • 尝试关闭
    MLIR
    converter。另外,发布的
    edgetpu\u编译器版本与
    MLIR

lmk如果你发现了一些成功,也很乐意尝试一下!
仅供参考:我已转换了yolov4,但架构师只允许在edgetpu上运行1/962操作,因此这是一个不好的选择。

我已更改为tf2.2,并使用了TOCO转换器。现在我无法转换模型,现在的问题是:
:0:错误:转换时失败:“main”:flex运行时支持的操作(通过设置-emit select tf Ops标志启用):ResizeNearestNeighbor,ResizeNearestNeighbor.
我也曾在tf上尝试过通过设置
实验性的u new_uuuconverter=False关闭MLIR转换器,但结果是一样的。通过查看netron,我看到模型已被量化,并已转换为Toco。嘿,对不起,我认为您还需要使用tf2.2进行培训:/请查看以下答案:为了澄清,我的建议是,模型的创建和培训也应在tf2.2中完成,不仅仅是tflite转换。我认为量化感知训练是目前的解决方案:D