Keras模型无法正确使用预测

时间:2019-09-05 04:21:00

标签: python tensorflow keras

我有一个我训练,评估甚至测试过的Keras模型。现在,我试图在模型中使用三个测试图像。

我通过预处理器运行图像,该预处理器与我用来制作训练数据的相同。然后,我对测试数据的单个图像执行完全相同的操作。但这给我一个

的错误
  

检查模型输入时出错:传递给模型的Numpy数组列表不是模型期望的大小。预计会看到1个数组,但获得了以下2个数组的列表:

我不知道这是怎么回事。

这就是我成功测试模型的方式。

y_pred = []
y_true = []
for i in range(0, len(test_x1)):
    x1 = test_x1[i]
    x2 = test_x2[i]
    x1 = np.expand_dims(x1, axis=0)
    x2 = np.expand_dims(x2, axis=0)
    y_true.append(np.argmax(test_y[i]))
    pred = model.predict([x1, x2])
    y_pred.append(make_binary(pred))

这是我用于两个图像的预处理方法

def create_features(file, image_dir, base_model):
    img_path = os.path.join(image_dir, file)
    img = image.load_img(img_path, target_size=(224, 224))
    img = image.img_to_array(img)
    x = resnet50.preprocess_input(img)
    x = np.array([x])
    feature = base_model.predict(x)
    return feature

这就是我处理新图像的方式:

IMAGE_DIR = 'Data'
img1 = 'test1.jpg'
img2 = 'test2.jpg'
img3 = 'test3.jpg'

img1_feat = create_features(img1, IMAGE_DIR, model)
img2_feat = create_features(img2, IMAGE_DIR, model)
img3_feat = create_features(img3, IMAGE_DIR, model)

现在,当我查看这两个功能时,它们是相同的。

x1 = test_x1[0]
x1 = np.expand_dims(x1, axis=0)
print(x1.shape)
print(type(x1))

print(img1_feat.shape)
print(type(img1_feat))
(1, 1, 1000)
<class 'numpy.ndarray'>
(1, 1, 1000)
<class 'numpy.ndarray'>

然后我尝试从中做出预测

pred1 = model.predict([img1_feat, img2_feat])

但这会导致错误。

1 个答案:

答案 0 :(得分:0)

由于@Matias Valdenegro和@Mukul,我发现了问题所在 我是在Ipython笔记本上执行此操作的,经过几个时期后,我发现该模型有时会被另一个类中导入的resent模型所覆盖。 感谢大家的帮助。我没有考虑使用model.summary(),因为我没有真正认为它已经改变。