因此,我训练了一个带有假量化的tensorflow模型,并将它与一个.pb文件作为输出进行冻结。现在,我想将这个.pb文件提供给tensorflow lite toco以进行完全量化,并获得.tflite文件。
我正在使用这个tensorflow示例:speech
我要问的部分是:
bazel run tensorflow/lite/toco:toco -- \
--input_file=/tmp/tiny_conv.pb --output_file=/tmp/tiny_conv.tflite \
--input_shapes=1,49,43,1 --input_arrays=Reshape_1 --output_arrays='labels_softmax' \
--inference_type=QUANTIZED_UINT8 --mean_values=0 --std_values=2 \
--change_concat_input_ranges=false以上部分调用toco并进行转换。注意,谷歌将mean_values设置为0,std_values设置为2。他们是如何计算这两个数值的?对于这个特定的模式,它被训练识别单词“是”和“否”。如果我想识别这10位数字,在这种情况下是否需要更改平均值和std值呢?我没有找到任何官方文件来说明这一部分。任何帮助都将不胜感激。
发布于 2019-02-05 05:06:52
对于uint8量化模型,预期输入值在0到255之间。即使使用FakeQuantization,培训期间的输入值通常是不同范围内的浮动值(例如,0.0到1.0)。mean_value和std_value控制如何将0到255个范围内的uint8值映射到培训期间使用的浮点值。您可以使用这个启发式来确定这些值:
mean_value =对应于浮点0.0的0,255范围内的uint8值。因此,如果浮动范围为0.0,1.0,则mean_value =0。
std_value = (uint8_max - uint8_min) / (float_max - float_min)。因此,如果浮动范围为0.0,1.0,则std_value = 255 / 1.0 = 255。
我们正在研究使这件事更简单的方法。希望这能有所帮助!
https://stackoverflow.com/questions/54261772
复制相似问题