Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android studio Can';t使用kotlin从android studio内的tensorflow lite模型中提取有意义的完整输出_Android Studio_Kotlin_Tensorflow Lite - Fatal编程技术网

Android studio Can';t使用kotlin从android studio内的tensorflow lite模型中提取有意义的完整输出

Android studio Can';t使用kotlin从android studio内的tensorflow lite模型中提取有意义的完整输出,android-studio,kotlin,tensorflow-lite,Android Studio,Kotlin,Tensorflow Lite,我正在尝试将一个模型集成到android应用程序中 模型由以下行定义: model = Sequential() model.add(Conv2D(filters=32, kernel_size=(5, 5), padding='Same', activation='relu', input_shape=(150, 150, 3))) model.add(MaxPooling2D(pool_size=(2, 2))) #additional layers model.add(Conv2D(f

我正在尝试将一个模型集成到android应用程序中

模型由以下行定义:

model = Sequential()
model.add(Conv2D(filters=32, kernel_size=(5, 5), padding='Same', activation='relu', input_shape=(150, 150, 3)))
model.add(MaxPooling2D(pool_size=(2, 2)))

#additional layers

model.add(Conv2D(filters=96, kernel_size=(3, 3), padding='Same', activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))

model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dense(NUMBER_OF_FLOWERS, activation="softmax"))

#additional line skipped

model.compile(optimizer=Adam(lr=0.001),loss='categorical_crossentropy',metrics=['accuracy'])
tf.saved_model.save(model, model_train_path)

import tensorflow as tf

# Convert the model
converter = tf.lite.TFLiteConverter.from_saved_model(model_train_path) # path to the SavedModel directory
tflite_model = converter.convert()
然后,我用以下行保存了模型:

model = Sequential()
model.add(Conv2D(filters=32, kernel_size=(5, 5), padding='Same', activation='relu', input_shape=(150, 150, 3)))
model.add(MaxPooling2D(pool_size=(2, 2)))

#additional layers

model.add(Conv2D(filters=96, kernel_size=(3, 3), padding='Same', activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))

model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dense(NUMBER_OF_FLOWERS, activation="softmax"))

#additional line skipped

model.compile(optimizer=Adam(lr=0.001),loss='categorical_crossentropy',metrics=['accuracy'])
tf.saved_model.save(model, model_train_path)

import tensorflow as tf

# Convert the model
converter = tf.lite.TFLiteConverter.from_saved_model(model_train_path) # path to the SavedModel directory
tflite_model = converter.convert()
我可以在android studio项目中加载模型, 并尝试了以下几行

val model = Model.newInstance(this)
val inputFeature0 = TensorBuffer.createFixedSize(intArrayOf(1, 150, 150, 3), DataType.FLOAT32)
val bytebuffer = ByteBuffer.allocate(270000)
bytebuffer.put(image)
inputFeature0.loadBuffer(bytebuffer)

#the following lines are some attemps I did to extract the outputs
val outputs = model.process(inputFeature0)
val t = outputFeature0.floatArray
t是一个具有正确输出形状(20)的向量,只包含NaN值。 我希望得到一个概率向量

在过去的两周里,我没有找到解决这个问题的办法。 另外,我不确定问题是否在于网络的定义(python代码), 或者是科特林的东西


谢谢

你能先核实一下你的TF图是否有效吗?如果TF图工作正常,则可以在Python层中验证转换后的TFLite模型是否工作正常。我还建议检查上述示例中的输入是否正确生成。