我在学习深度学习,而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:检查输入时出错:预期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
如您所见,它们的大小匹配,这是预期的输入。
这是怎么回事?当我传递整个数据帧“预测”时,它可以正常工作,但是当我传递单个值时,它不能正常工作...
答案 0 :(得分:0)
您需要一个数组,而不是列表。您仅将列表用于多个输入张量。
model.predict(np.array([vals]), batch_size=1)
但是为什么不呢?
model.predict(X_encoded.values, batch_size=1)