我正在使用MobileNetV2,并试图使其在Google Coral上运行。除了Coral Web编译器,一切似乎都可以正常工作,并抛出一个随机错误Uncaught application failure
。因此,我认为问题在于所需的中间步骤。例如,我将其与tflite_convert
tflite_convert \
--graph_def_file=optimized_graph.pb \
--output_format=TFLITE \
--output_file=mobilenet_v2_new.tflite \
--inference_type=FLOAT \
--inference_input_type=FLOAT \
--input_arrays=input \
--output_arrays=final_result \
--input_shapes=1,224,224,3
我怎么了?
答案 0 :(得分:1)
这很可能是因为您的模型不是quantized。 Edge TPU设备当前不支持基于浮点的模型推断。 为了获得最佳结果,您应该在训练期间启用量化(在链接中进行说明)。但是,您也可以在TensorFlow Lite转换期间应用量化。
使用训练后量化,您可以牺牲准确性,但可以更快地进行测试。将图形转换为TensorFlow Lite格式时,请将inference_type
设置为QUANTIZED_UINT8
。您还需要在命令行上应用量化参数(mean / range / std_dev)。
tflite_convert \
--graph_def_file=optimized_graph.pb \
--output_format=TFLITE \
--output_file=mobilenet_v2_new.tflite \
--inference_type=QUANTIZED_UINT8 \
--input_arrays=input \
--output_arrays=final_result \
--input_shapes=1,224,224,3 \
--mean_values=128 --std_dev_values=127 \
--default_ranges_min=0 --default_ranges_max=255
然后可以将量化的.tflite
文件传递到model compiler。
有关Edge TPU模型要求的更多详细信息,请查看TensorFlow models on the Edge TPU。