无法使用循环在Keras中预测单个实例

时间:2019-08-27 19:03:15

标签: python keras

我在学习深度学习,而Keras由于其简单性而成为我的选择。

我为二进制分类建立了一个简单的多层感知器模型,并将其拟合到输入数据中(与我在其他ML模型中使用的模型相同,并且可以正常工作)。

以下图片显示了模型摘要:

enter image description here

第一个致密层的定义如下:

model.add(Dense(18, input_dim=len(X_encoded.columns), activation = "relu", kernel_initializer="uniform"))

当我尝试预测像这样的循环时:

for vals in X_encoded.values:
    print("Survives?", model.predict([vals], batch_size=1))

我收到以下错误:

  

ValueError:检查输入时出错:预期density_90_input具有形状(35,)但形状为(1,)的数组

这些是我的可变尺寸:

print("Shape of vals:", vals.shape, "Number of Columns and First Layer Dimension:", len(X_encoded.columns))

结果:

  

val的形状:(35,)列数和第一层尺寸:35

如您所见,它们的大小匹配,这是预期的输入。

这是怎么回事?当我传递整个数据帧“预测”时,它可以正常工作,但是当我传递单个值时,它不能正常工作...

1 个答案:

答案 0 :(得分:0)

您需要一个数组,而不是列表。您仅将列表用于多个输入张量。

model.predict(np.array([vals]), batch_size=1)    

但是为什么不呢?

model.predict(X_encoded.values, batch_size=1)