用于运行 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_model
和 from_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。
相关用法
- Python tf.lite.Interpreter.get_signature_runner用法及代码示例
- Python tf.lite.Interpreter.tensor用法及代码示例
- Python tf.lite.Interpreter.get_signature_list用法及代码示例
- Python tf.lite.Interpreter.resize_tensor_input用法及代码示例
- Python tf.lite.experimental.QuantizationDebugger用法及代码示例
- Python tf.lite.TFLiteConverter用法及代码示例
- Python tf.lite.experimental.authoring.compatible用法及代码示例
- Python tf.lite.experimental.load_delegate用法及代码示例
- Python tf.linalg.LinearOperatorFullMatrix.matvec用法及代码示例
- Python tf.linalg.LinearOperatorToeplitz.solve用法及代码示例
- Python tf.linalg.LinearOperatorIdentity.solvevec用法及代码示例
- Python tf.linalg.LinearOperatorPermutation.solve用法及代码示例
- Python tf.linalg.band_part用法及代码示例
- Python tf.linalg.LinearOperatorKronecker.diag_part用法及代码示例
- Python tf.linalg.lu_matrix_inverse用法及代码示例
- Python tf.linalg.LinearOperatorToeplitz.matvec用法及代码示例
- Python tf.linalg.LinearOperatorBlockLowerTriangular.solvevec用法及代码示例
- Python tf.linalg.LinearOperatorLowerTriangular.matvec用法及代码示例
- Python tf.linalg.LinearOperatorCirculant2D.solve用法及代码示例
- Python tf.linalg.LinearOperatorCirculant3D.diag_part用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.lite.Interpreter。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。