runForMultipleInputs method

void runForMultipleInputs(
  1. List<Object> inputs,
  2. Map<int, Object> outputs
)

Run for multiple inputs and outputs

Implementation

void runForMultipleInputs(List<Object> inputs, Map<int, Object> outputs) {
  if (inputs.isEmpty) {
    throw ArgumentError('Input error: Inputs should not be null or empty.');
  }
  if (outputs.isEmpty) {
    throw ArgumentError('Input error: Outputs should not be null or empty.');
  }

  var inputTensors = getInputTensors();

  for (int i = 0; i < inputs.length; i++) {
    var tensor = inputTensors.elementAt(i);
    final newShape = tensor.getInputShapeIfDifferent(inputs[i]);
    if (newShape != null) {
      resizeInputTensor(i, newShape);
    }
  }

  if (!_allocated) {
    allocateTensors();
    _allocated = true;
  }

  inputTensors = getInputTensors();
  for (int i = 0; i < inputs.length; i++) {
    inputTensors.elementAt(i).setTo(inputs[i]);
  }

  var inferenceStartNanos = DateTime.now().microsecondsSinceEpoch;
  invoke();
  _lastNativeInferenceDurationMicroSeconds =
      DateTime.now().microsecondsSinceEpoch - inferenceStartNanos;

  var outputTensors = getOutputTensors();
  for (var i = 0; i < outputTensors.length; i++) {
    outputTensors[i].copyTo(outputs[i]!);
  }
}