Ошибка Android Tensorflow tflite. Не найдена операция для встроенного кода операции «FULLY_CONNECTED» версии «12». МожетAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Ошибка Android Tensorflow tflite. Не найдена операция для встроенного кода операции «FULLY_CONNECTED» версии «12». Может

Сообщение Anonymous »

Внутренняя ошибка: невозможно создать интерпретатор: не найдена операция для встроенного кода операции «FULLY_CONNECTED» версии «12». Может поддерживаться более старая версия этой встроенной функции. Вы используете старый двоичный файл TFLite с более новой моделью?
Это используемый код

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

@Throws(IOException::class)
fun loadModelFile(
context: Context,
modelFileName: String = "constant_output_model.tflite"
): MappedByteBuffer {
val fileDescriptor = context.assets.openFd(modelFileName)
val inputStream = FileInputStream(fileDescriptor.fileDescriptor)
val fileChannel = inputStream.channel
val startOffset = fileDescriptor.startOffset
val declareLength = fileDescriptor.declaredLength
return fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declareLength)
}
Это инициализация API интерпретатора

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

InterpreterApi.create(
TfLiteUtils.loadModelFile(this, "voice_detection_2_17_0_new_ops.tflite"),
InterpreterApi.Options().apply {
numThreads = 1
}
)
Это фиктивная модель архитектуры той же формы и выходных данных.

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

input_shape = (None, 39, 63, 1)  # Input shape (excluding batch dimension)
inputs = tf.keras.Input(shape=input_shape[1:])
x = tf.keras.layers.Conv2D(filters=128, kernel_size=(8, 8), activation='relu', padding='same')(inputs)
x = tf.keras.layers.AveragePooling2D(pool_size=(2, 2))(x)
x = tf.keras.layers.Conv2D(filters=64, kernel_size=(3, 3), activation='relu', padding='same')(x)
x = tf.keras.layers.AveragePooling2D(pool_size=(2, 2))(x)
x = tf.keras.layers.Conv2D(filters=128, kernel_size=(3, 3), activation='relu', padding='same')(x)
x = tf.keras.layers.MaxPooling2D(pool_size=(2, 2))(x)
x = tf.keras.layers.Flatten()(x) # if I remove this then model works
x = tf.keras.layers.Dense(units=256)(x)
x = tf.keras.layers.LeakyReLU(alpha=0.1)(x)
x = tf.keras.layers.Dense(units=2, activation='softmax')(x)
outputs = tf.keras.layers.Dense(units=1)(x)
model = tf.keras.Model(inputs=inputs, outputs=outputs)
return model
В настоящее время используется файл AAR 2.17 тензорного потока. Его нет в maven, но его можно собрать с помощью официального репозитория.
Использование lite-rt в Google также не работает с той же ошибкой.
реализация "com.google.ai.edge.litert:litert" :1.0.1"
Он не работает в версии 2.17, следовательно, если вы используете версию 2.16, то он работает с использованием другого API для Интерпретатора
2.16 имеет Интерпретатор, версия 2.17 имеет InterpreterApi

Подробнее здесь: https://stackoverflow.com/questions/792 ... ly-connect
Ответить

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

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

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

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

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