Interpreter

herkese açık final dersi Çevirmen

TensorFlow Lite ile model çıkarımı yapmak için sürücü sınıfı.

Not: "Deneysel" çalışmalardan hiçbirine erişmeniz gerekmiyorsa Aşağıdaki API özelliklerini kullanın; Yorumlayıcı'yı doğrudan kullanmak yerine ConsulterApi ve ConsulterFactory.

Interpreter, önceden eğitilmiş bir TensorFlow Lite modelini içerir. Bu modelde gibi işlemler model çıkarımı için yürütülür.

Örneğin, bir model yalnızca bir giriş alır ve yalnızca bir çıkış döndürürse:

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

Bir model birden fazla giriş veya çıkış alıyorsa:

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 (Interpreter interpreter = new Interpreter(file_of_a_tensorflowlite_model)) {
   interpreter.runForMultipleInputsOutputs(inputs, map_of_indices_to_outputs);
 }
 

Bir model dize tensörleri alır veya üretirse:

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

Şekil [] ile şekil[1] arasında ayrım olduğuna dikkat edin. Skaler dize tensörü için çıktılar:

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 modeli TensorFlowLite'a dönüştürülürken giriş ve çıkış sıraları belirlenir. girişlerin varsayılan şekillerini de içerir.

Girişler (çok boyutlu) diziler olarak sağlandığında karşılık gelen giriş tensörleri dolaylı olarak yeniden boyutlandırabilirsiniz. Girişler Buffer olarak sağlandığında dolaylı yeniden boyutlandırma yapılmaz; arayan, Buffer bayt boyutundan emin olmalıdır. tensörü önce resizeInput(int, int[]) aracılığıyla yeniden boyutlandırırlar. Tensor şekil ve tür bilgileri, getInputTensor(int) ve getOutputTensor(int) aracılığıyla kullanılabilen Tensor sınıfı aracılığıyla elde edilebilir.

UYARI:Interpreter örnekleri iş parçacığı için güvenli değildir. Interpreter close() çağrılmasıyla açık bir şekilde serbest bırakılması gereken kaynaklara sahip

TFLite kitaplığı, NDK API 19'a göre geliştirilmiştir. 19'un altındaki Android API seviyelerinde çalışabilir. ancak garanti edilmez.

İç İçe Yerleştirilmiş Sınıflar

sınıf Interpreter.Options Çalışma zamanı çevirmen davranışını kontrol etmek için bir seçenek sınıfı.

Kamu Yüklenicileri

Çevirmen(Dosya modelFile)
Bir Interpreter başlatır.
Yorumlayıcı(Dosya modelFile, Interpreter.Options seçenekleri)
Bir Interpreter başlatır ve çevirmen davranışını özelleştirme seçeneklerini belirtir.
Çevirmen(ByteBuffer byteBuffer)
Interpreter işlemini, bir model dosyasının ByteBuffer değeriyle başlatır.
Çevirmen(ByteBuffer byteBuffer, Interpreter.Options seçenekleri)
Bir model dosyasının ByteBuffer ve bir grupInterpreter özel Interpreter.Options.

Herkese Açık Yöntemler

geçersiz
allocateTensors()
Gerekirse tüm tensörler için ayırmaları açık bir şekilde günceller.
geçersiz
close()
InterpreterApi örneğiyle ilişkili kaynakları serbest bırakın.
int
getInputIndex(Dize opName)
Girişin işlem adı verilen bir girişin dizinini alır.
Tensor
getInputTensor(int inputIndex)
Sağlanan giriş diziniyle ilişkilendirilmiş Tensor'u alır.
int
getInputTensorCount()
Giriş tensörü sayısını alır.
Tensor
getInputTensorFromSignature(Dize girdisiAdı, Dize İleti İmzası)
Sağlanan giriş adı ve imza yöntemi adıyla ilişkilendirilmiş Tensor'u alır.
Uzun
getLastNativeInferenceDurationNanoseconds()
Yerel çıkarım zamanlamasını döndürür.
int
getOutputIndex(Dize opName)
Çıkışın işlem adı olarak belirtilen çıkışın dizinini alır.
Tensor
getOutputTensor(int exitIndex)