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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
C++ 在将pb转换为ff lite时,不理解平均值和标准偏差值_C++_Tensorflow_Tensorflow Lite_Quantization - Fatal编程技术网

C++ 在将pb转换为ff lite时,不理解平均值和标准偏差值

C++ 在将pb转换为ff lite时,不理解平均值和标准偏差值,c++,tensorflow,tensorflow-lite,quantization,C++,Tensorflow,Tensorflow Lite,Quantization,我试图量化存储在.pb中的tensoflow图。 网络的输入是一个矩阵,每一行用平均值0和标准值1标准化。 我想创建一个tensorflow lite模型quantizate以更快地进行交互。 我不知道如何将输入传递到行转换。它只是一个值吗?有64个值的向量?它是如何通过的 模型转换良好,无需量化 tflite_convert \ --output_file=model_simple_weight_q.tflite \ --graph_def_file=model_simple.

我试图量化存储在.pb中的tensoflow图。 网络的输入是一个矩阵,每一行用平均值0和标准值1标准化。 我想创建一个tensorflow lite模型quantizate以更快地进行交互。 我不知道如何将输入传递到行转换。它只是一个值吗?有64个值的向量?它是如何通过的

模型转换良好,无需量化

tflite_convert \
    --output_file=model_simple_weight_q.tflite \
    --graph_def_file=model_simple.pb \
    --inference_type=QUANTIZED_UINT8 \
    --input_arrays=input \
    --output_arrays=LogSoftmax \
    --mean_values= # dont know  \
    --std_dev_values=# dont know
如果我传递两个单值,例如,-mean_values=127和--std_dev_values=128。为了知道发生了什么,我得到了以下错误:

F tensorflow/lite/toco/graph_transformations/resolve_constant_gather.cc:108] Check failed: coords_array.data_type == ArrayDataType::kInt32 Only int32 indices are supported
Aborted (core dumped)

您看到的错误与平均值/标准偏差值无关。一般来说,转换图形时出错。这意味着在一个图形操作中,索引用于
tf.gather
(或者可能是切片),它的类型不是
int32
,但这是唯一受支持的索引类型

不幸的是,TFLite转换错误通常不会告诉您导致错误的源代码,因此您必须进行有根据的猜测


关于平均值/标准偏差值,我建议您看看这个答案:

由于输入的每一行都用平均值0和标准偏差1标准化,您应该给出
--平均偏差值=0
--标准偏差值=1
。此外,当您进行“虚拟训练后量化”时,您需要为激活功能提供最小和最大范围。您需要提供--default\u ranges\u min=和--default\u ranges\u max=

由于tensorflow没有提供关于如何计算激活范围的非常清晰的描述,因此最好使用较小的校准数据进行“训练后全整数量化”。在该方法中,使用校准图像计算激活函数的范围

问候,