当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.lite.Interpreter用法及代码示例


用于运行 TensorFlow Lite 模型的解释器接口。

用法

tf.lite.Interpreter(
    model_path=None, model_content=None, experimental_delegates=None,
    num_threads=None,
    experimental_op_resolver_type=tf.lite.experimental.OpResolverType.AUTO,
    experimental_preserve_all_tensors=False
)

参数

  • model_path TF-Lite Flatbuffer 文件的路径。
  • model_content 模型的内容。
  • experimental_delegates 实验性的。可调整的。列表TfLiteDelegatelite.load_delegate() 返回的对象。
  • num_threads 设置解释器使用且可用于 CPU 内核的线程数。如果未设置,解释器将使用与实现相关的默认线程数。目前,只有一部分内核(例如 conv)支持多线程。 num_threads 应该 >= -1。将 num_threads 设置为 0 具有禁用多线程的效果,相当于将 num_threads 设置为 1。如果设置为值 -1,则使用的线程数将由实现定义和平台相关。
  • experimental_op_resolver_type 解释器使用的操作解析器。它必须是 OpResolverType 的一个实例。默认情况下,我们使用内置的操作解析器,它对应于 C++ 中的 tflite::ops::builtin::BuiltinOpResolver。
  • experimental_preserve_all_tensors 如果为 true,则保留计算期间使用的中间张量以供检查,如果传递的操作解析器类型为 AUTO 或 BUILTIN,则类型将更改为 BUILTIN_WITHOUT_DEFAULT_DELEGATES 以便不应用 Tensorflow Lite 默认委托。如果为 false,则获取中间张量可能会导致未定义的值或无,尤其是当 Tensorflow Lite 默认委托成功修改图形时。

抛出

  • ValueError 如果解释器无法创建。

TfLiteConverter 获得的模型可以在 Python 中使用 Interpreter 运行。

例如,让我们生成一个简单的 Keras 模型并将其转换为 TFLite(TfLiteConverter 还支持其他输入格式 from_saved_modelfrom_concrete_function )

x = np.array([[1.], [2.]])
y = np.array([[2.], [4.]])
model = tf.keras.models.Sequential([
          tf.keras.layers.Dropout(0.2),
          tf.keras.layers.Dense(units=1, input_shape=[1])
        ])
model.compile(optimizer='sgd', loss='mean_squared_error')
model.fit(x, y, epochs=1)
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()

tflite_model 可以保存到文件并稍后加载,或直接加载到 Interpreter 中。由于 TensorFlow Lite 预先计划张量分配以优化推理,因此用户需要在任何推理之前调用 allocate_tensors()

interpreter = tf.lite.Interpreter(model_content=tflite_model)
interpreter.allocate_tensors()  # Needed before execution!

示例执行:

output = interpreter.get_output_details()[0]  # Model has single output.
input = interpreter.get_input_details()[0]  # Model has single input.
input_data = tf.constant(1., shape=[1, 1])
interpreter.set_tensor(input['index'], input_data)
interpreter.invoke()
interpreter.get_tensor(output['index']).shape
(1, 1)

使用 get_signature_runner() 获取更多 user-friendly 推理 API。

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.lite.Interpreter。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。