Tensorflow Lite toco——平均值——标准值?

Tensorflow Lite toco——平均值——标准值?,tensorflow,tensorflow-lite,Tensorflow,Tensorflow Lite,所以我用伪量化训练了一个tensorflow模型,并用一个.pb文件作为输出将其冻结。现在我想将这个.pb文件提供给tensorflow lite toco,以进行完全量化,并获得.tflite文件 我正在使用这个tensorflow示例: 我有问题的部分是: bazel run tensorflow/lite/toco:toco -- \ --input_file=/tmp/tiny_conv.pb --output_file=/tmp/tiny_conv.tflite \ --input_s

所以我用伪量化训练了一个tensorflow模型,并用一个.pb文件作为输出将其冻结。现在我想将这个.pb文件提供给tensorflow lite toco,以进行完全量化,并获得.tflite文件

我正在使用这个tensorflow示例:

我有问题的部分是:

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并进行转换。请注意,Google将平均_值设置为0,将标准_值设置为2。他们是如何计算这两个值的?对于这个特定的模型,它被训练识别单词“是”和“否”。如果我想识别10位数字,在这种情况下是否需要更改平均值和标准值?我没有找到任何说明这一部分的官方文件。任何帮助都将不胜感激

对于uint8量化模型,输入值应在0到255之间。即使使用伪量化,训练期间的输入值通常是不同范围内的浮点值(例如,0.0到1.0)。mean_值和std_值控制0到255范围内的uint8值如何映射到训练期间使用的浮点值。您可以使用此启发式来确定这些值:

mean_value=与浮点0.0相对应的[0255]范围内的uint8值。因此,如果浮动范围为[0.0,1.0],则平均值=0

标准值=(最大值-最小值)/(最大值-最小值)。因此,如果浮动范围为[0.0,1.0],则std_值=255/1.0=255

我们正在研究使这一点更简单的方法。希望这有帮助