加载预训练的Keras模型并进行预测

我使用Keras的一些示例拼凑了一个简单的神经网络,基于Kaggle的猫狗基础数据集(https://www.kaggle.com/c/dogs-vs-cats-redux-kernels-edition/data)。我成功地训练并保存了一个模型,使用的是

model.fit_generator(         #train_generator,         #samples_per_epoch=2000,         #nb_epoch=50,         #validation_data=validation_generator,         #nb_val_samples=800)model.save('first_model.h5')

但是当我尝试加载模型进行预测时,出现了以下错误

Traceback (most recent call last):  File "/Users/me/PycharmProjects/CatVsDog/SampleML.py", line 48, in <module>    print(saved_model.predict_generator(test_generator, 12500))  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras/models.py", line 1012, in predict_generator    pickle_safe=pickle_safe)  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras/engine/training.py", line 1763, in predict_generator    outs = self.predict_on_batch(x)  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras/engine/training.py", line 1371, in predict_on_batch    self.internal_input_shapes)  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/keras/engine/training.py", line 85, in standardize_input_data    'Found: ' + str(data)[:200] + '...')TypeError: Error when checking : data should be a Numpy array, or list/dict of Numpy arrays. Found: None...Exception ignored in: <bound method Session.__del__ of <tensorflow.python.client.session.Session object at 0x10c7586d8>>Traceback (most recent call last):  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tensorflow/python/client/session.py", line 581, in __del__UnboundLocalError: local variable 'status' referenced before assignment

这是我在PyCharm解决方案中保存图像的位置。测试目录中有1到12500个.jpg文件,训练集的猫和狗目录中各有11500个带标签的.jpg文件,验证目录中各有1000个带标签的.jpg文件。enter image description here

这是我的代码

from __future__ import print_functionfrom keras.models import Sequentialfrom keras.layers import Dense, Dropout, Activation, Flattenfrom keras.layers import Convolution2D, MaxPooling2Dfrom keras.preprocessing.image import ImageDataGeneratorfrom keras.models import load_modeltrain_datagen = ImageDataGenerator(        rescale=1./255,        shear_range=0.2,        zoom_range=0.2,        horizontal_flip=True)test_datagen = ImageDataGenerator(rescale=1./255)train_generator = train_datagen.flow_from_directory(        'train',        target_size=(64, 64),        batch_size=32,        class_mode='binary')validation_generator = test_datagen.flow_from_directory(        'validate',        target_size=(64, 64),        batch_size=32,        class_mode='binary')test_generator = train_datagen.flow_from_directory(         'test',         target_size=(64, 64),         batch_size=32,         class_mode='binary')nb_filters = 32kernel_size = (3,3)pool_size = (2, 2)nb_classes = 2input_shape = (64, 64, 3)saved_model = load_model('first_model.h5')score = saved_model.evaluate_generator(validation_generator, 2000)print('Test score:', score[0])print('Test accuracy:', score[1])print(saved_model.predict_generator(test_generator, 12500))

回答:

我认为你提供给predict_generator的数据格式不正确。

在进行预测时,与训练和评估不同,你不需要提供标签。因此,我建议你将test_generator更改为如下:

test_generator = train_datagen.flow_from_directory(     'test',     target_size=(64, 64),     batch_size=32,     #这将不会输出目标。      class_mode=None)

你可以在这里找到关于ImageDataGenerator文档

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注