Java.lang.AssertionError: «Не поддерживает тип данных INT32» в Android StudioAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Java.lang.AssertionError: «Не поддерживает тип данных INT32» в Android Studio

Сообщение Anonymous »

Я разрабатываю приложение в Android Studio, используя модель TensorFlow Lite. При запуске приложения я сталкиваюсь со следующей ошибкой:

Код: Выделить всё

java.lang.AssertionError: TensorFlow Lite does not support data type INT32
Ниже приведена соответствующая часть моего кода:

Код: Выделить всё

// Prepare input tensor
val inputFeature0 = TensorBuffer.createFixedSize(inputShape, DataType.FLOAT32)
inputFeature0.loadArray(flatArray)

// Run inference
val outputs = model?.process(inputFeature0)
val rawOutputBuffer = outputs?.outputFeature0AsTensorBuffer

// Extract raw data as IntArray or FloatArray based on the data type
val outputArray = when (rawOutputBuffer?.dataType) {
DataType.INT32 -> rawOutputBuffer.intArray // Directly access INT32 data
DataType.FLOAT32 -> rawOutputBuffer.floatArray.map { it.toInt() }.toIntArray() // Convert FloatArray to IntArray
else -> throw IllegalArgumentException("Unsupported output tensor data type: ${rawOutputBuffer?.dataType}")
}
  • Входной тензор имеет тип FLOAT32, и входные данные загружаются правильно с помощью TensorBuffer.createFixedSize() и loadArray().
  • При обработке выходного тензора модели (

    Код: Выделить всё

    outputFeature0AsTensorBuffer
    ), я добавил проверки для обработки выходных данных FLOAT32 и INT32.
  • Несмотря на это, приложение вылетает с ошибкой, указывающей, что TensorFlow Lite не поддерживает INT32.
Что я пробовал :
  • Убедено, что входной тензор использует FLOAT32.
  • Проверено, что модель TensorFlow Lite совместима с типом данных FLOAT32.
  • Проверено тип выходных тензорных данных и добавлена ​​обработка как для FLOAT32, так и для INT32.
Я ожидал, что вывод модели пройдет без проблем, поскольку я обработал оба FLOAT32. и случаи вывода INT32.
Вопросы:
  • Почему TensorFlow Lite выдает эту ошибку, даже если FLOAT32 используется для входной тензор?
  • Связана ли ошибка с тем, как TensorFlow Lite внутренне управляет типами данных, такими как измерения тензора или метаданные?
  • Как я могу устранить эту ошибку и убедитесь, что TensorFlow Lite выполняет вывод успешно?


Подробнее здесь: https://stackoverflow.com/questions/793 ... oid-studio
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»