InterpreterApi

herkese açık arayüz InterpreterApi
Bilinen Dolaylı Alt Sınıflar

Deneysel yöntemler hariç TensorFlow Lite model yorumlayıcısı arayüzü.

InterpreterApi örneği, önceden eğitilmiş bir TensorFlow Lite modelini içerir. işlemleri 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 (InterpreterApi interpreter =
     new InterpreterApi.create(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 (InterpreterApi interpreter =
     new InterpreterApi.create(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 (InterpreterApi interpreter =
     new InterpreterApi.create(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 türünde sağlandığında örtülü yeniden boyutlandırma yapılmaz; çağrıyı yapan, Buffer bayt boyutunun karşılık gelen tensörün boyutuyla eşleştiğinden veya önce tensörü resizeInput(int, int[]) aracılığıyla yeniden boyutlandırın. Tensor şekli ve türü bilgileri getInputTensor(int) ve getOutputTensor(int) aracılığıyla kullanılabilen Tensor sınıfı üzerinden alınmıştır.

UYARI:InterpreterApi örnekleri iş parçacığı için güvenli değildir.

UYARI: InterpreterApi örneğinin sahip olması gereken kaynaklar close() çağrılmasıyla açıkça serbest bırakıldı

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 InterpreterApi.Options Çalışma zamanı çevirmen davranışını kontrol etmek için bir seçenek sınıfı.

Herkese Açık Yöntemler

soyut geçersiz
allocateTensors()
Gerekirse tüm tensörler için ayırmaları açık bir şekilde günceller.
soyut geçersiz
close()
InterpreterApi örneğiyle ilişkili kaynakları serbest bırakın.
statik InterpreterApi
create(File modelFile, InterpreterApi.Options seçenekleri)
Belirtilen modeli ve seçenekleri kullanarak bir InterpreterApi örneği oluşturur.
statik InterpreterApi
create(ByteBuffer byteBuffer, InterpreterApi.Options seçenekleri)
Belirtilen modeli ve seçenekleri kullanarak bir InterpreterApi örneği oluşturur.
soyut tamsayı
getInputIndex(Dize opName)
Girişin işlem adı verilen bir girişin dizinini alır.
soyut Tensor
getInputTensor(int inputIndex)
Sağlanan giriş diziniyle ilişkilendirilmiş Tensor'u alır.
soyut tamsayı
getInputTensorCount()
Giriş tensörü sayısını alır.
soyut Uzun
getLastNativeInferenceDurationNanoseconds()
Yerel çıkarım zamanlamasını döndürür.
soyut tamsayı
getOutputIndex(Dize opName)
Çıkışın işlem adı olarak belirtilen çıkışın dizinini alır.
soyut Tensor
getOutputTensor(int exitIndex)
Sağlanan çıkış diziniyle ilişkilendirilmiş Tensor'u alır.
soyut tamsayı
getOutputTensorCount()
Çıkış Tensör sayısını alır.
soyut geçersiz
resizeInput(int idx, int[] dims, boolean strict)
Yerel modelin idx-th girişini belirtilen karartma değerlerine yeniden boyutlandırır.
soyut geçersiz
resizeInput(int idx, int[] loş)
Yerel modelin idx-th girişini belirtilen karartma değerlerine yeniden boyutlandırır.
soyut geçersiz
run(Nesne girişi, Nesne çıkışı)
Model yalnızca bir giriş alıp yalnızca bir çıkış sağlıyorsa model çıkarımı çalıştırır.
soyut geçersiz
runForMultipleInputsOutputs(Nesne[] girişleri, Harita <TamsayıNesne> çıkışlar)
Model birden fazla giriş alıyorsa veya birden fazla çıkış döndürürse model çıkarımını çalıştırır.

Devralınan Yöntemler

Herkese Açık Yöntemler

herkese açık soyut geçersiz 'nı inceleyin. allocateTensors ()

Gerekirse tüm tensörler için ayırmaları açık bir şekilde günceller.

Bu işlem, girişi kullanarak bağımlı tensörler için şekilleri ve bellek ayırmalarını yayar tensör şekillerini değiştirin.

Not: Bu arama *tamamen isteğe bağlıdır*. Tensor tahsisi, şu süre boyunca otomatik olarak gerçekleşir: herhangi bir giriş tensörü yeniden boyutlandırıldığında yürütülür. Bu çağrı, projenizin en önemli herhangi bir çıkış tensörü için farklı şekiller (ör.

 interpreter.resizeInput(0, new int[]{1, 4, 4, 3}));
 interpreter.allocateTensors();
 FloatBuffer input = FloatBuffer.allocate(interpreter.getInputTensor(0).numElements());
 // Populate inputs...
 FloatBuffer output = FloatBuffer.allocate(interpreter.getOutputTensor(0).numElements());
 interpreter.run(input, output)
 // Process outputs...

Not: Bazı grafiklerin çıkışları dinamik olarak şekillendirilmiştir. Bu durumda, çıkış şekli çıkarım yürütülene kadar tam olarak yayılır.

Fırlatma
IllegalStateException .

herkese açık soyut geçersiz 'nı inceleyin. kapat ()

InterpreterApi örneğiyle ilişkili kaynakları serbest bırakın.

herkese açık statik InterpreterApi oluşturma (Dosya modelFile, InterpreterApi.Options seçenekleri)

Belirtilen modeli ve seçenekleri kullanarak bir InterpreterApi örneği oluşturur. Model bir dosyadan yüklenir.

Parametreler
modelFile Önceden eğitilmiş TF Lite modeli içeren bir dosya.
seçenekler Çevirmen davranışını özelleştirmek için bir dizi seçenek.
Fırlatma
IllegalArgumentException modelFile geçerli bir TensorFlow Lite kodlamazsa modeli.

herkese açık statik InterpreterApi oluşturma (ByteBuffer byteBuffer, InterpreterApi.Options seçenekleri)

Belirtilen modeli ve seçenekleri kullanarak bir InterpreterApi örneği oluşturur. Model ByteBuffer üzerinden okunacak.

Parametreler
byteBuffer İkili serileştirilmiş biçimde, önceden eğitilmiş bir TF Lite modeli. ByteBuffer, InterpreterApi örneği oluşturulduktan sonra değiştirilmez. ByteBuffer, bellekle bir model dosyası eşleyen bir MappedByteBuffer veya bir modelin bayt içeriğini içeren yerel Order() doğrudan ByteBuffer.
seçenekler Çevirmen davranışını özelleştirmek için bir dizi seçenek.
Fırlatma
IllegalArgumentException byteBuffer bir MappedByteBuffer veya bir değilse yerelSiparişin doğrudan ByteBuffer.

herkese açık soyut tamsayı 'nı inceleyin. getInputIndex (Dize opName)

Girişin işlem adı verilen bir girişin dizinini alır.

Parametreler
opName
Fırlatma
IllegalArgumentException opName, kullanılan modeldeki hiçbir girişle eşleşmezse çevirmeyi başlatın.

herkese açık soyut Tensor getInputTensor (int inputIndex)

Sağlanan giriş diziniyle ilişkilendirilmiş Tensor'u alır.

Parametreler
inputIndex
Fırlatma
IllegalArgumentException inputIndex negatifse veya model girişi sayısı.

herkese açık soyut tamsayı 'nı inceleyin. getInputTensorCount ()

Giriş tensörü sayısını alır.

herkese açık soyut Uzun getLastNativeInferenceDurationNanoseconds ()

Yerel çıkarım zamanlamasını döndürür.

Fırlatma
IllegalArgumentException Model, çevirmen tarafından başlatılmazsa

herkese açık soyut tamsayı 'nı inceleyin. getOutputIndex (Dize opName)

Çıkışın işlem adı olarak belirtilen çıkışın dizinini alır.

Parametreler
opName
Fırlatma
IllegalArgumentException opName, kullanılan modeldeki hiçbir çıkışla eşleşmezse çevirmeyi başlatın.

herkese açık soyut Tensor getOutputTensor (int exitIndex)

Sağlanan çıkış diziniyle ilişkilendirilmiş Tensor'u alır.

Not: Çıkış tensörü ayrıntıları (ör. şekil), çıkarım sonrasına kadar tam olarak doldurulamaz yürütüldüğünden emin olun. Çıkarım yapmadan *önce* güncellenmiş ayrıntılara ihtiyacınız varsa (ör. çıkış tensörü şekillerini geçersiz kılacak olan giriş tensörü için allocateTensors() kullanın ayırma ve şekil yayılımını açıkça tetiklemesi. Çıktı şekillerine sahip grafiklerde, *değerlerine* bağlı olan satır öğeleri için, çıktının şekli çıkarım yapabilirsiniz.

Parametreler
outputIndex
Fırlatma
IllegalArgumentException outputIndex negatifse veya model çıkışı sayısı.

herkese açık soyut tamsayı 'nı inceleyin. getOutputTensorCount ()

Çıkış Tensör sayısını alır.

herkese açık soyut geçersiz 'nı inceleyin. resizeInput (int idx, int[] dims, boole katı)

Yerel modelin idx-th girişini belirtilen karartma değerlerine yeniden boyutlandırır.

"strict" (doğru) değerine ayarlandığında yalnızca bilinmeyen boyutlar yeniden boyutlandırılabilir. Bilinmeyen boyutlar "Tensor.shapeSignature()" tarafından döndürülen dizide "-1" olarak belirtilir.

Parametreler
idx
kararır
yüksek düzey
Fırlatma
IllegalArgumentException idx negatifse veya sayıdan küçük değilse sayısı; emin olun. Ayrıca hata "strict" özelliği True (doğru) olarak ayarlandığında, sabit boyutlu bir tensörü yeniden boyutlandırmaya çalışıldığında ortaya çıkar.

herkese açık soyut geçersiz 'nı inceleyin. resizeInput (int idx, int[] soluk)

Yerel modelin idx-th girişini belirtilen karartma değerlerine yeniden boyutlandırır.

Parametreler
idx
kararır
Fırlatma
IllegalArgumentException idx negatifse veya sayıdan küçük değilse sayısı; emin olun.

herkese açık soyut geçersiz 'nı inceleyin. koş (Nesne girişi, Nesne çıkışı)

Model yalnızca bir giriş alıp yalnızca bir çıkış sağlıyorsa model çıkarımı çalıştırır.

Uyarı: API, Buffer (tercihen doğrudan ancak zorunlu değil) ise daha verimlidir giriş/çıkış veri türü olarak kullanılır. Feed'i alıp getirmek için Buffer kullanmayı düşünün temel verilere sahip olacaktır. Aşağıdaki somut Buffer türleri şunlardır: desteklenir:

  • ByteBuffer: Temel Tensor türleriyle uyumludur.
  • FloatBuffer - kayan Tensörler ile uyumludur.
  • IntBuffer - int32 Tensor ile uyumlu.
  • LongBuffer - int64 Tensor ile uyumlu.
ziyaret edin. Boole türlerinin yalnızca dizi olarak desteklendiğini, Buffer veya skaler giriş olarak desteklendiğini unutmayın.

Parametreler
giriş bir dizi veya çok boyutlu dizi ya da temel türlerin Buffer kadarı (int, float, long ve byte gibi). Buffer, büyük boyutlu öğeleri aktarmak için tercih edilen yoldur ilkel türler için giriş verileri, dize türlerinde ise (çok boyutlu) dizi giriş yolunu izleyin. Bir Buffer kullanıldığında, içeriği şu tarihe kadar değişmeden kalmalıdır: model çıkarımı yapılır ve çağrıyı yapan, Buffer öğesinin uygun okuma konumuna getirin. null değerine yalnızca çağrıyı yapan bir arabellek işleyici birlikte çalışabilirliğine izin veren Delegate ve böyle bir arabellek, Tensor girişi.
çıkış çıkış verilerinin çok boyutlu bir dizisi veya temel türlerin Buffer kadarı (int, float, long ve byte gibi). Buffer kullanıldığında, arayan kullanıcı şunlardan emin olmalıdır: olarak ayarlandığından emin olun. Null değere izin verilir ve bu değer, belirli durumlarda (ör. arayan, arabellek tutma yerine izin veren bir Delegate kullanıyorsa) birlikte çalışabilirlik ve böyle bir arabellek, Tensor çıktısına bağlanmıştır (ayrıca bkz. Interpreter.Options#setAllowBufferHandleOutput(boolean)), veya grafik dinamik olarak şekillendirilmiş çıkışlara sahipse ve çıkarım çağrıldıktan sonra çağrıyı yapan kişinin çıktıyı Tensor şeklini sorgulaması, verileri doğrudan çıkıştan getirmesi gerekir tensor (Tensor.asReadOnlyBuffer() üzerinden).
Fırlatma
IllegalArgumentException input null veya boşsa ya da çıkarım yapabilirsiniz.
IllegalArgumentException (DENEYSEL, değiştirilebilir). Çıkarım setCancelled(true) tarafından kesintiye uğratıldı.

herkese açık soyut geçersiz 'nı inceleyin. runForMultipleInputsOutputs (Nesne[] girişleri, Harita <TamsayıNesne> çıkışlar)

Model birden fazla giriş alıyorsa veya birden fazla çıkış döndürürse model çıkarımını çalıştırır.

Uyarı: API, Buffer öğeleri (tercihen doğrudan ancak zorunlu değil) ise daha verimlidir giriş/çıkış veri türü olarak kullanılır. Feed'i alıp getirmek için Buffer kullanmayı düşünün temel verilere sahip olacaktır. Aşağıdaki somut Buffer türleri şunlardır: desteklenir:

  • ByteBuffer: Temel Tensor türleriyle uyumludur.
  • FloatBuffer - kayan Tensörler ile uyumludur.
  • IntBuffer - int32 Tensor ile uyumlu.
  • LongBuffer - int64 Tensor ile uyumlu.
ziyaret edin. Boole türlerinin yalnızca dizi olarak desteklendiğini, Buffer veya skaler giriş olarak desteklendiğini unutmayın.

Not: inputs ve outputs öğelerinin ayrı öğeleri için null değerleri yalnızca çağrıyı yapan, arabellek tutma yeri birlikte çalışabilirlik özelliğine izin veren bir Delegate kullanıyorsa ve bu tür bir tampon, karşılık gelen giriş veya çıkışa Tensor bağlanmıştır.

Parametreler
girişler giriş verileri dizisidir. Girişler, modeli. Her giriş bir dizi veya çok boyutlu dizi ya da Buffer int, float, long ve byte gibi temel türler. Tercih edilen yöntem Buffer dize türünde (çok boyutlu) diziyi kullanmayı gerektirirken, dize türünde giriş yolunu izleyin. Buffer kullanıldığında, içeriği modele kadar değişmeden kalmalıdır. Çıkarım yapılır ve arayan, Buffer öğesinin uygun durumda olduğundan emin olmalıdır. okuma konumu.
çıkışlar çok boyutlu çıkış verileri dizilerine veya int, float, long ve byte gibi temel türlere ait Buffer'ler ile harita çıktı dizinlerini eşleyen bir harita. Sadece girişlerden oluşmalıdır. Buffer kullanıldığında, arayan kullanıcı şunlardan emin olmalıdır: olarak ayarlandığından emin olun. Harita, arabellek tutma yerleri çıkış tensörü verileri veya çıkışların dinamik olarak şekilli olmalı ve çağrı yapanın, çıkarım yapıldıktan sonra Tensor çıktısı şeklini sorgulaması gerekir. çağrılır ve veriler doğrudan çıkış tensöründen (Tensor.asReadOnlyBuffer() aracılığıyla) getirilir.
Fırlatma
IllegalArgumentException inputs null veya boşsa, outputs ise değeri olmayan bir değer ifade eder.