我使用以下教程程序(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'>
谢谢
答案 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)