Как преобразовать многомерный массив Swift в формат данных для TensorFlow Lite?

У меня есть модель TFLite со следующей формой ввода:

      num_rows = 40
num_columns = 174
num_channels = 1

Я начал с массива Swift, но TensorFlow Lite хочет, чтобы он был именно таким.

Вот как я попытался преобразовать свой массив в:

      let interpreter = try Interpreter(modelPath: modelPath!)
            
// Allocate memory for the model's input `Tensor`s.
try interpreter.allocateTensors()
            
// Get initial data "sendtoModel" as type Array<Array<Double>>! 
// ... from the testRecognizer() function

let sendtoModel = try? testRecognizer()

// Convert Array<Array>Double>>! to `Data`
let encodedData = NSKeyedArchiver.archivedData(withRootObject: sendtoModel)

// Send converted Data to TFLite model
try self.interpreter.copy(encodedData, toInputAt: 0)

Когда я запускаю этот код, я получаю сообщение об ошибке, указывающее на последнюю строку.

Поток 1: Неустранимая ошибка: неожиданно обнаружен ноль при неявном развертывании необязательного значения

Что здесь происходит? Я явно что-то не так делаю в процессе конвертации. Я не нашел нулевых элементов в , начальный массив двойных массивов. Затем я перебрал элементы объекта Data и проверил, нет ли среди них нуля; никого не было.

Я много часов боролся с этим преобразованием и был бы очень признателен за некоторые указатели. Я знаю, что есть способ преобразовать массивы Swift в формат, необходимый TFLite для Swift, но по-моему, это не так. Я даже не уверен, что делаю это правильно, если смогу исправить ошибку, изложенную выше.

0 ответов

Другие вопросы по тегам