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
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. |
|
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 | |
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 | |
Tensor |
getOutputTensor(int exitIndex)
|