Lite中运行Keras模型时的不同预测

Lite中运行Keras模型时的不同预测

本文介绍了在TensorFlow Lite中运行Keras模型时的不同预测的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用预训练的Keras图像分类器试用TensorFlow Lite,将H5转换为tflite格式后,我得到的预测更糟.这是预期的行为(例如权重量化),错误还是使用解释器时我忘记了一些东西?

Trying out TensorFlow Lite with a pretrained Keras image classifier, I'm getting worse predictions after converting the H5 to the tflite format. Is this intended behaviour (e.g. weight quantization), a bug or am I forgetting something when using the interpreter?

from imagesoup import ImageSoup
from tensorflow.keras.applications.resnet50 import ResNet50, preprocess_input, decode_predictions
from tensorflow.keras.preprocessing.image import load_img, img_to_array

# Load an example image.
ImageSoup().search('terrier', n_images=1)[0].to_file('image.jpg')
i = load_img('image.jpg', target_size=(224, 224))
x = img_to_array(i)
x = x[None, ...]
x = preprocess_input(x)

# Classify image with Keras.
model = ResNet50()
y = model.predict(x)
print("Keras:", decode_predictions(y))

# Convert Keras model to TensorFlow Lite.
model.save(f'{model.name}.h5')
converter = tf.contrib.lite.TocoConverter.from_keras_model_file
tflite_model = converter(f'{model.name}.h5').convert()
with open(f'{model.name}.tflite', 'wb') as f:
    f.write(tflite_model)

# Classify image with TensorFlow Lite.
f = tf.contrib.lite.Interpreter(f'{model.name}.tflite')
f.allocate_tensors()
i = f.get_input_details()[0]
o = f.get_output_details()[0]
f.set_tensor(i['index'], x)
f.invoke()
y = f.get_tensor(o['index'])
print("TensorFlow Lite:", decode_predictions(y))

TensorFlow Lite:[[('n07753275','菠萝',0.94529104),('n03379051', 'football_helmet',0.033994876),('n03891332','parking_meter', 0.011431991),('n04522168','vase',0.0029440755),('n02094114','Norfolk_terrier',0.0022089847)]]

TensorFlow Lite: [[('n07753275', 'pineapple', 0.94529104), ('n03379051', 'football_helmet', 0.033994876), ('n03891332', 'parking_meter', 0.011431991), ('n04522168', 'vase', 0.0029440755), ('n02094114', 'Norfolk_terrier', 0.0022089847)]]

推荐答案

TensorFlow 1.10中的from_keras_model_file中存在错误.该问题已在8月9日每晚发布的此提交中得以解决.

There was a bug in from_keras_model_file in TensorFlow 1.10. It was fixed in the August 9th nightly release in this commit.

每晚可以通过pip install tf-nightly安装.此外,它将在TensorFlow 1.11中修复.

The nightly can be installed via pip install tf-nightly. Additionally, it will be fixed in TensorFlow 1.11.

这篇关于在TensorFlow Lite中运行Keras模型时的不同预测的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-13 12:48