Код: Выделить всё
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().
- При обработке выходного тензора модели (), я добавил проверки для обработки выходных данных FLOAT32 и INT32.
Код: Выделить всё
outputFeature0AsTensorBuffer - Несмотря на это, приложение вылетает с ошибкой, указывающей, что TensorFlow Lite не поддерживает INT32.
- Убедено, что входной тензор использует FLOAT32.
- Проверено, что модель TensorFlow Lite совместима с типом данных FLOAT32.
- Проверено тип выходных тензорных данных и добавлена обработка как для FLOAT32, так и для INT32.
Вопросы:
- Почему TensorFlow Lite выдает эту ошибку, даже если FLOAT32 используется для входной тензор?
- Связана ли ошибка с тем, как TensorFlow Lite внутренне управляет типами данных, такими как измерения тензора или метаданные?
- Как я могу устранить эту ошибку и убедитесь, что TensorFlow Lite выполняет вывод успешно?
Подробнее здесь: https://stackoverflow.com/questions/793 ... oid-studio