Проблемы измерения LSTM с реализацией swift / coreml - PullRequest
0 голосов
/ 14 марта 2020

Я сгенерировал модель LSTM для классификации аудио, используя керасы с tf в качестве бэкэнда. После преобразования в .ml-модель с использованием coremltools у меня возникают проблемы, как вы можете видеть здесь . Размеры сильно отличаются от ожидаемых.

Я использовал this для своей базы в xcode в swift.

Особенно этот фрагмент - то, что я считаю, дает мне проблема:

do {
    let request = try SNClassifySoundRequest(mlModel: soundClassifier.model)
    try analyzer.add(request, withObserver: resultsObserver)
        } catch {
                print("Unable to prepare request: \(error.localizedDescription)")
                return
                }
   }

Запуск этой модели выдает мне следующую ошибку:

Invalid model, inputDescriptions.count = 5

Unable to prepare request: Invalid model, inputDescriptions.count = 5

Даже когда я строю модель, я вижу то, что ожидается в программе. c:

description {
  input {
    name: "audioSamples"
    shortDescription: "Audio from microphone"
    type {
      multiArrayType {
        shape: 13
        dataType: DOUBLE
      }
    }
  }

Я пытаюсь включить этот пост в мой код, но я не уверен, как отформатировать его в соответствии с моими потребностями. Любые советы высоко ценится. Я вижу, что MLMultiArray является ключом к моему вопросу, но я не уверен: как поместить в него правильные данные и как поместить это sh в тип SNClassifySoundRequest.

keras == 2.3. 1 coremltools == 3,3

1 Ответ

0 голосов
/ 14 марта 2020

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

Если вы обучили свою модель с Keras, скорее всего, она не совместима с требованиями SNClassifySoundRequest.

Хорошая новость заключается в том, что вам не нужно SNClassifySoundRequest для запуска вашей модели , Просто позвоните soundClassifier.prediction(...) на модель.

Обратите внимание, что вам нужно передать входные данные, а также скрытые состояния слоев LSTM. Core ML не будет автоматически управлять состоянием LSTM для вас (в отличие от Keras).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...