InterpreterApi

ממשק ציבורי InterpreterApi
מחלקות משנה עקיפות ידועות

ממשק למתורגמן של המודלים TensorFlow Lite, לא כולל שיטות ניסיוניות.

מכונה InterpreterApi כוללת מודל TensorFlow Lite שעבר אימון מקדים, שבו והפעולות מבוצעות לצורך הסקת מסקנות מהמודל.

לדוגמה, אם המודל מקבל רק קלט אחד ומחזיר רק פלט אחד:

try (InterpreterApi interpreter =
     new InterpreterApi.create(file_of_a_tensorflowlite_model)) {
   interpreter.run(input, output);
 }
 

אם המודל מקבל כמה קלטים או פלטים:

Object[] inputs = {input0, input1, ...};
 Map<Integer, Object> map_of_indices_to_outputs = new HashMap<>();
 FloatBuffer ith_output = FloatBuffer.allocateDirect(3 * 2 * 4);  // Float tensor, shape 3x2x4.
 ith_output.order(ByteOrder.nativeOrder());
 map_of_indices_to_outputs.put(i, ith_output);
 try (InterpreterApi interpreter =
     new InterpreterApi.create(file_of_a_tensorflowlite_model)) {
   interpreter.runForMultipleInputsOutputs(inputs, map_of_indices_to_outputs);
 }
 

אם המודל לוקח או מפיק מעבדי מחרוזות:

String[] input = {"foo", "bar"};  // Input tensor shape is [2].
 String[][] output = new String[3][2];  // Output tensor shape is [3, 2].
 try (InterpreterApi interpreter =
     new InterpreterApi.create(file_of_a_tensorflowlite_model)) {
   interpreter.runForMultipleInputsOutputs(input, output);
 }
 

שימו לב שיש הבחנה בין צורה [] לצורה[1]. לטנזין של מחרוזת סקלרית פלט:

String[] input = {"foo"};  // Input tensor shape is [1].
 ByteBuffer outputBuffer = ByteBuffer.allocate(OUTPUT_BYTES_SIZE);  // Output tensor shape is [].
 try (Interpreter interpreter = new Interpreter(file_of_a_tensorflowlite_model)) {
   interpreter.runForMultipleInputsOutputs(input, outputBuffer);
 }
 byte[] outputBytes = new byte[outputBuffer.remaining()];
 outputBuffer.get(outputBytes);
 // Below, the `charset` can be StandardCharsets.UTF_8.
 String output = new String(outputBytes, charset);
 

הסדר של נתוני הקלט והפלט נקבעים בהמרה של מודל TensorFlow ל-TensorFlowLite ב-Toco, וכך גם צורות ברירת המחדל של הקלט.

כאשר ערכי הקלט מוצגים כמערכים (רב-מימדיים), רכיבי הקלט המתאימים לשנות את גודלן במרומז בהתאם לצורת המערך. כשמזינים ערכי קלט בתור סוגים של Buffer, לא מתבצע שינוי גודל מרומז. מבצע הקריאה החוזרת חייב לוודא שהגודל של הבייטים Buffer תואם לזה של הארגומנט התואם, או שינוי גודל הטנזור דרך resizeInput(int, int[]). פרטי הצורה והסוג של Tensor יכולים להיות התקבל באמצעות המחלקה Tensor, זמינה דרך getInputTensor(int) ו-getOutputTensor(int).

אזהרה: מכונות InterpreterApi לא בטוחות לשרשורים.

אזהרה: למכונה של InterpreterApi יש משאבים שחייבים להיות שוחרר באופן מפורש על ידי הפעלת close()

ספריית TFLite מבוססת על NDK API 19. יכול להיות שהתכונה תפעל גם ברמות API של Android מתחת ל-19, אבל הדבר לא מובטח.

מחלקות מקוננות

מחלקה InterpreterApi.Options סיווג אפשרויות לשליטה בהתנהגות של המתורגמן בסביבת זמן הריצה.

שיטות ציבוריות

מופשט ריק
allocateTensors()
מעדכן באופן מפורש את ההקצאות לכל הפרמטרים של Tensor, אם יש צורך.
מופשט ריק
Close()
שחרור משאבים שמשויכים למכונה InterpreterApi.
סטטי