TF Lite Interpreter — kernbegrippen, interface en het uitvoeren van modellen

Auteur: IT Sectr Gepubliceerd: 2026-07-18 Leestijd: 6 min

TF Lite Interpreter is de belangrijkste component van TensorFlow Lite, verantwoordelijk voor het uitvoeren van modellen in .tflite-formaat op mobiele en ingebedde apparaten. De Interpreter laadt de FlatBuffers-weergave van het model, alloceert tensoren voor invoer- en uitvoergegevens, voert de berekeningsgraaf uit en retourneert het resultaat. Volgens TensorFlow Lite API Reference, 2025 is Interpreter beschikbaar in Java en C++ voor Android, Swift en Objective-C voor iOS, en via Python-bindings voor testen. TF Lite Interpreter ondersteunt delegaten voor hardwareversnelling via GPU, NNAPI en Core ML.

Belangrijkste

  • TF Lite Interpreter — runtime voor het uitvoeren van .tflite-modellen op mobiele en ingebedde apparaten.
  • Interpreter laadt het model, alloceert tensoren en voert de berekeningsgraaf operator voor operator uit.
  • API beschikbaar in Java, C++, Swift, Objective-C en Python voor verschillende platforms.
  • Delegaten GPU, NNAPI en Core ML versnellen inferentie tot 5x vergeleken met CPU.
  • Meerdere interpreters maken het mogelijk om meerdere modellen parallel uit te voeren in één applicatie.

Kernbegrippen van TF Lite Interpreter

TF Lite Interpreter is een minimalistische runtime die een machine learning-model op het apparaat uitvoert zonder serverinfrastructuur. Interpreter ondersteunt geen training — alleen inferentie. Dit maakt hem licht: de binaire grootte van de basisinterpreter op Android is ongeveer 300 KB.

Interpreter werkt met het model in .tflite-formaat, gebaseerd op FlatBuffers. Bij het maken laadt Interpreter het model in het geheugen via mmap, wat directe toegang tot gegevens zonder kopiëren mogelijk maakt. Vervolgens alloceert Interpreter tensoren op basis van de modelbeschrijving en is klaar voor uitvoering.

Elke Interpreter-instantie is niet thread-safe. Voor parallelle uitvoering van één model in meerdere threads maakt u afzonderlijke Interpreter-instanties met kopieën van het model. Voor sequentiële aanroepen in één thread kan de Interpreter-instantie opnieuw worden gebruikt.

Interpreter API op Android en iOS

Op Android is Interpreter beschikbaar via Java API in het pakket org.tensorflow.lite.Interpreter. De belangrijkste methode — run(Object input, Object output) — accepteert multidimensionale arrays of ByteBuffer. Gebruik voor fijnere controle de methoden runForMultipleInputsOutputs() en resizeInput().

Op iOS is Interpreter beschikbaar via Swift API in de module TensorFlowLite. De basisinterface is analoog aan Android: initialisatie via Interpreter.init(modelPath:), allocatie van tensoren via allocateTensors(), uitvoering via invoke(). Swift API ondersteunt Data en MLMultiTensor als invoergegevenstypen.

API-vergelijking per platform

PlatformTaalKlasseInferentiemethode
AndroidJava / KotlinInterpreterrun(), runForMultipleInputsOutputs()
Android (native)C++InterpreterInvoke()
iOSSwift / Obj-CInterpreterinvoke()
Linux / PythonPythonInterpreterget_tensor(), invoke()

Configuratie van delegaten voor hardwareversnelling

Delegaten zijn componenten die de uitvoering van bewerkingen overdragen aan gespecialiseerde hardware. GPU Delegate gebruikt OpenGL ES (Android) en Metal (iOS) voor versnelling van grafische bewerkingen. NNAPI Delegate draagt de uitvoering over aan NPU, DSP of GPU via Android Neural Networks API.

Core ML Delegate is beschikbaar op iOS en vertaalt TFLite-bewerkingen naar Core ML-formaat. Volgens Apple ML Benchmarking versnelt het gebruik van Core ML Delegate op iPhone 15 Pro de inferentie tot 4x vergeleken met CPU. De delegate ondersteunt FP32- en FP16-bewerkingen.

XNNPACK Delegate is een universele oplossing voor ARM CPU, geoptimaliseerd voor mobiele processoren. Vereist geen speciale hardware en ondersteunt INT8, FP16 en FP32. Wordt aanbevolen als basisdelegate die op alle apparaten wordt geactiveerd.

Geheugen- en tensorbeheer

Interpreter beheert tensoren via een geheugenpool die wordt gealloceerd bij aanroep van allocateTensors(). De poolgrootte wordt bepaald op basis van de modelbeschrijving in het .tflite-bestand. Na allocatie wijst de interpreter geen extra geheugen toe tijdens inferentie.

Gebruik voor modellen met dynamische invoergroottes resizeInput(). Deze methode herverdeelt het geheugen voor invoertensoren rekening houdend met de nieuwe grootte. Na wijziging van de invoertensorgrootte kan heraccatie via allocateTensors() nodig zijn.

Bij het werken met meerdere modellen is het belangrijk om resources vrij te geven via close(). Niet-vrijgegeven Interpreters kunnen leiden tot geheugenlekken, vooral op apparaten met beperkt RAM. Gebruik voor iOS automatische referentietelling ARC, voor Android try-with-resources of een expliciete close()-aanroep.

Foutafhandeling en debuggen

De meest voorkomende fouten bij het werken met Interpreter — niet-overeenkomende tensorafmetingen. Als invoergegevens niet overeenkomen met de verwachte vorm, gooit Interpreter IllegalArgumentException op Android of een runtime-fout op iOS. Controleer afmetingen via inputTensorAt() en outputTensorAt().

Het tweede veelvoorkomende probleem — niet-ondersteunde operatoren bij gebruik van een delegate. Als de delegate een operator niet ondersteunt, valt Interpreter automatisch terug op CPU voor die operator. Activeer logging via setCancelled() of controleer TFLite-logs om dergelijke situaties te detecteren.

TFLite biedt Benchmark Tool voor profilering: meting van de tijd van elke operator, geheugengebruik, vergelijking van delegaten. Benchmark Tool is beschikbaar als onderdeel van TFLite Support Library en kan direct op het apparaat worden uitgevoerd.

Voorbeelden van inferentie via Interpreter

Voorbeeld van modeluitvoering op Android met Java API met behulp van GPU Delegate. Interpreter wordt gemaakt met opties die de GPU-delegate bevatten. Na uitvoering van de inferentie wordt het resultaat uit de uitvoertensor gelezen:

java
import org.tensorflow.lite.Interpreter;
import org.tensorflow.lite.gpu.GpuDelegate;
import java.nio.MappedByteBuffer;

MappedByteBuffer model = loadModelFile(context);
GpuDelegate gpu = new GpuDelegate();
Interpreter.Options opts = new Interpreter.Options().addDelegate(gpu);
Interpreter interpreter = new Interpreter.create(model, opts);

float[][] input = preprocessImage(bitmap);
float[][] output = new float[1][1000];
interpreter.run(input, output);

int bestClass = argmax(output[0]);
Log.d("TFLite", "Topklasse: " + bestClass);

gpu.close();
interpreter.close();

Voorbeeld van uitvoering op Python voor testen vóór implementatie. TFLite Python API maakt het mogelijk .tflite te laden, inferentie uit te voeren en het resultaat weer te geven. Wordt gebruikt voor debuggen en het controleren van de modelnauwkeurigheid:

python
import tensorflow as tf
import numpy as np

# Laad het TFLite-model uit bestand
interpreter = tf.lite.Interpreter(model_path="model.tflite")
interpreter.allocate_tensors()

# Haal invoer- en uitvoertensordetails op
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()

# Bereid willekeurige invoergegevens voor testen voor
input_data = np.random.randn(
    *input_details[0]["shape"]
).astype(np.float32)

interpreter.set_tensor(input_details[0]["index"], input_data)
interpreter.invoke()

output_data = interpreter.get_tensor(output_details[0]["index"])
print("Uitvoervorm:", output_data.shape)

Veelgestelde vragen

Hoeveel geheugen verbruikt TF Lite Interpreter?

De basis Interpreter voor Android neemt ongeveer 300 KB in beslag. Extra geheugen wordt toegewezen voor de tensoren van het model en hangt af van de grootte van de invoergegevens, het aantal operatoren en de kwantisatiemodus.

Kan Interpreter in meerdere threads worden gebruikt?

Een enkele Interpreter-instantie is niet thread-safe. Maak voor parallelle uitvoering meerdere instanties met afzonderlijke kopieën van het model. Elke instantie gebruikt zijn eigen geheugen voor tensoren.

Hoe controleer ik welke delegaten beschikbaar zijn op het apparaat?

Gebruik TFLite Support Library — de klasse DelegatesApi. Roep DelegatesApi.getAvailableDelegates() aan om een lijst van beschikbare delegaten op een specifiek apparaat te krijgen.

Wat te doen als Interpreter een fout gooit bij het laden van het model?

Controleer de integriteit van het .tflite-bestand via tf.lite.experimental.Analyzer. Zorg ervoor dat het model is geconverteerd voor de juiste TFLite-versie en de bewerkingen ondersteunt die beschikbaar zijn op het doelapparaat.

Hoe wijzig ik de grootte van de invoertensor na het maken van Interpreter?

Gebruik de methode resizeInput(int idx, int[] dims) in Java API of resizeInput(at:to:) in Swift. Roep na het wijzigen van de grootte allocateTensors() aan voor herverdeling van het geheugen.

Samenvatting

  • TF Lite Interpreter — minimalistische runtime voor het uitvoeren van .tflite-modellen op mobiele apparaten.
  • Interpreter laadt het model via mmap, alloceert tensoren en voert de berekeningsgraaf uit.
  • API beschikbaar in Java, C++, Swift, Objective-C en Python met een uniforme interface.
  • GPU-, NNAPI- en Core ML-delegaten versnellen inferentie tot 5x vergeleken met CPU.
  • Gebruik resizeInput() voor modellen met dynamische invoergegevensgroottes.
  • Sluit Interpreter via close() om geheugenlekken te voorkomen.
  • Benchmark Tool helpt bij het profileren van prestaties op het echte apparaat.

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook