Это используемый код
Код: Выделить всё
@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)
}
Код: Выделить всё
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
Использование 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
Мобильная версия