在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')
网友评论