我有一个 Keras 模块,可以检测某些面部表情并希望将其转换为 tflite,但它似乎不起作用。我正在使用 Kaggle 笔记本和 TensorFlow 版本:2.15.0 & Keras 版本:3.0.5
这是我的模型,在转换之前它运行良好:
model = Sequential()
# Convolutional layers
# input_shape = (128, 128, 1)
model.add(Conv2D(128, kernel_size=(3,3), activation="relu", input_shape=input_shape))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.4))
model.add(Conv2D(256, kernel_size=(3,3), activation="relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.4))
model.add(Conv2D(512, kernel_size=(3,3), activation="relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.4))
model.add(Conv2D(512, kernel_size=(3,3), activation="relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.4))
model.add(Flatten())
# Fully connected layers
model.add(Dense(512, activation="relu"))
model.add(Dropout(0.4))
model.add(Dense(256, activation="relu"))
model.add(Dropout(0.3))
# Output layer
model.add(Dense(output_class, activation="softmax"))
model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"])
我将模型保存为h5格式,并将其加载到新笔记本上,绝望地尝试它是否有效。
import tensorflow as tf
from keras.models import load_model
这正在工作,它打印了预期的消息
model = tf.keras.models.load_model('/kaggle/input/grimace-recognition/keras/grimace v1/1/grimace.h5')
print("loaded successfully")
然后我将模型传递给 tflite 转换器,它会打印第一条消息“转换器已建立”,但随后它会停止并且不会打印其他消息而不显示任何错误,然后我需要执行来自笔记本上的开头。
converter = tf.lite.TFLiteConverter.from_keras_model(model)
print("converter established")
tfmodel = converter.convert()
print("converted successfully")
open("grimace.tflite", "wb").write(tfmodel)
注意:我计划在 flutter 移动应用程序中使用 tflite 模型。
同样的问题...我必须在协作中再次训练模型并且它有效