2

我正在玩一些深度学习,而 Keras 是我的选择,因为它很简单。

我为二进制分类构建了一个简单的多层感知器模型,并将其安装在输入数据上(与我用于其他 ML 模型的相同,并且工作正常)。

下图显示了模型摘要:

在此处输入图像描述

第一个密集层定义如下:

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:检查输入时出错:预期dense_90_input的形状为(35,)但得到的数组形状为(1,)

这些是我的可变尺寸:

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

结果:

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

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

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

4

1 回答 1

0

你需要一个数组,而不是一个列表。您只对多个输入张量使用列表。

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

但为什么不:

model.predict(X_encoded.values, batch_size=1)    
于 2019-08-27T19:16:17.663 回答