ByteBuffer is not a valid flatbuffer model

在Android手机上使用tensorflow训练出来的猫狗识别模型时,遇到如题目的问题

一加载模型,就报错,查了很多原因,通过上面的V3和下面的V2的对比,发现只能用V2的,如果用V3搞出来tflite模型,在Android手机上使用的时候会报【java.lang.IllegalArgumentException: ByteBuffer is not a valid flatbuffer model】异常

后来使用V2的预训练的模型,在tensorflow2.0的环境中训练,最后尝试了三种把tensorflow模型转换为tflite格式的模型的方式,最后在手机上都正常运行了

from tensorflow.keras.applications.inception_v3 import InceptionV3

#导入并使用预训练模型,这里include_top =False 使我们加载了一个不含有最顶部分类层的网络
# pre_trained_model = InceptionV3(
#     input_shape=(IMAGE_SIZE, IMAGE_SIZE, 3), include_top=False, weights='imagenet')
#通过上面的V3和下面的V2的对比,发现只能用V2的,如果用V3搞出来tflite模型,在Android手机上使用的时候
#会报【java.lang.IllegalArgumentException: ByteBuffer is not a valid flatbuffer model】异常
pre_trained_model = tf.keras.applications.MobileNetV2(
    input_shape=(IMAGE_SIZE, IMAGE_SIZE, 3), include_top=False, weights='imagenet')

哈哈,发现用预训练的模型,最后算出来的模型准确率比单纯的用图片从0开始训练的模型的准确率高多了

ByteBuffer is not a valid flatbuffer model_第1张图片
Screenshot_2018-12-10-16-26-15-0074678571.png
ByteBuffer is not a valid flatbuffer model_第2张图片
Screenshot_2018-12-10-16-26-25-0658584433.png

你可能感兴趣的:(ByteBuffer is not a valid flatbuffer model)