當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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