为什么量化的Uint8 TF-lite模型的执行时间比F32版本慢?

问题描述 投票:0回答:1

我正在使用TF1.12将具有两个conv2d层的简单mnist模型转换为TF-lite。

F32:

`*tflite_convert --output_file model_lite/conv_net_f32.tflite \
 --graph_def_file frozen_graphs/conv_net.pb  \
 --input_arrays "input" \
 --input_shapes "1,784" \
 --output_arrays output \
 --output_format TFLITE*`

UINT8:
 tflite_convert --output_file model_lite/conv_net_uint8.tflite \
 --graph_def_file frozen_graphs/conv_net.pb  \
 --input_arrays "input" \
 --input_shapes "1,784" \
 --output_arrays output \
 --output_format TFLITE \
 --mean_values 0\
 --std_dev_values 255\
 --default_ranges_min 0 \
 --default_ranges_max 255 \
 --inference_type QUANTIZED_UINT8 \
 --inference_input_type QUANTIZED_UINT8*

但是我发现量化的uint8版本的执行时间比f32慢。

结果:

Results:

对我来说这没有意义。

有人知道原因吗?

感谢您的任何输入!

tensorflow tensorflow-lite quantization tf-lite
1个回答
0
投票

我认为您应该尝试使用以下命令进行转换:

 tflite_convert --output_file model_lite/conv_net_uint8.tflite \
 --graph_def_file frozen_graphs/conv_net.pb  \
 --input_arrays "input" \
 --input_shapes "1,784" \
 --output_arrays output \
 --output_format TFLITE \
 --mean_values 128\
 --std_dev_values 127
 --default_ranges_min 0 \
 --default_ranges_max 1 \
 --inference_type QUANTIZED_UINT8 \
 --inference_input_type QUANTIZED_UINT8*

default_ranges_mindefault_ranges_max对应于网络的最大值和最小值,如激活功能范围内。如果使用的激活方式为relu6,则应将default_ranges_max更改为6

有关thismean_values的信息,请参见std_dev_values堆栈溢出问题。它们取决于您的训练数据。

© www.soinside.com 2019 - 2024. All rights reserved.