用於運行 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。