如何保存经过TF2训练的模型并再次用于推理?

时间:2020-05-24 03:48:03

标签: python-3.x tensorflow2.0

我使用以下教程程序(python3)训练了一个模型,将图像分类为猫还是狗。

https://www.tensorflow.org/tutorials/images/classification

我可以在ubuntu计算机上运行它,但是我想保存训练好的模型,然后再次尝试用我自己的图像对其进行测试。

能给我指出一个代码段吗 1.保存训练好的模型并 2.推断图像。

Re @PSKP

我能够保存和加载模型。代码在下面。

import tensorflow as tf

dog = tf.keras.preprocessing.image.load_img(
   "mowgli.JPG", grayscale=False, color_mode='rgb', target_size=None,
    interpolation='nearest'
   )

 print(dog.size)

 model = tf.keras.models.load_model('dog-cat.h5')
 y_hat = model.predict(dog)

 print(y_hat)

但是在model.predict上出现了这个错误...

ValueError: Failed to find data adapter that can handle input: <class 'PIL.JpegImagePlugin.JpegImageFile'>, <class 'NoneType'>

谢谢

1 个答案:

答案 0 :(得分:2)

我们有许多方法可以做到这一点。但我向您展示了最简单的方法。

解决方案

import tensorflow as tf

# Train model

model.fit(...)

# Save Model
model.save("model_name.h5")

# Delete Model
del model

# Load Model
model = tf.keras.models.load_model('model_name.h5')

# Now you can use model for inference
y_hat = model.predict(test_X)

编辑

ValueError的解决方案

问题是您的dog变量不是numpy数组或tensorflow张量。在使用它之前,您应该将其转换为numpy数组。另外,model.predict(..)不只接受单个图像,因此您应该增加一个尺寸。

import tensorflow as tf

dog = tf.keras.preprocessing.image.load_img(
   "mowgli.JPG", grayscale=False, color_mode='rgb', target_size=None,
    interpolation='nearest'
   )

# Convert to numpy array
dog = np.asarray(dog)

model = tf.keras.models.load_model('dog-cat.h5')

# Add extrac Dimension (it depends on your model)
# This is because dog has only one image. But predict takes multiple
dog = np.array([dog])

y_hat = model.predict(dog)

print(y_hat)

查找其他解决方案

Here