繁体   English   中英

Python Keras Model -- ValueError: Layer sequential expects 1 input(s), but it received 16 input tensors

[英]Python Keras Model -- ValueError: Layer sequential expects 1 input(s), but it received 16 input tensors

我已经看到许多其他人在 stackoverflow 上发布了关于同样的问题,但我一直无法弄清楚如何将这些解决方案应用到我的示例中。

我一直致力于创建一个 model 来根据包含 16 个特征的数据集预测 0 或 1 的结果——一切似乎都运行良好(准确性评估、纪元完成等)。

如前所述,我的训练特征包括 16 个不同的变量,但是当我传入一个包含 16 个独立于训练数据集的唯一值的列表以尝试做出单独的预测(0 或 1)时,我收到此错误:

ValueError: Layer sequential_11 expects 1 input(s), but it received 16 input tensors.

这是我的代码 -

y = datas.Result
X = datas.drop(columns = ['Date', 'home_team', 'away_team', 'home_pitcher', 'away_pitcher', 'Result'])

X = X.values.astype('float32')
y = y.values.astype('float32')

X_train, X_test, y_train, y_test = train_test_split(X,y, test_size = 0.2)
X_train, X_validation, y_train, y_validation = train_test_split(X, y, test_size = 0.2)

model=keras.Sequential([
           keras.layers.Dense(32, input_shape = (16,)),
           keras.layers.Dense(20,activation=tf.nn.relu),                           
           keras.layers.Dense(2,activation='softmax')
        ])

model.compile(optimizer='adam',
                loss='sparse_categorical_crossentropy',
                metrics=['acc'])

history = model.fit(X_train,y_train,epochs=20, validation_data=(X_validation, y_validation))

#all variables within features list are single values, ex: .351, 11, .991, etc.
features = [t1_pqm,t2_pqm,t1_elo,t2_elo,t1_era,t2_era,t1_bb9,t2_bb9,t1_fip,t2_fip,t1_ba,t2_ba,t1_ops,t2_ops,t1_so,t2_so]
prediction = model.predict(features)

model 期望形状为(None,16)的输入,但特征具有形状(16,) (一维列表)。 最简单的解决方案是使其成为具有正确形状(1, 16)的 numpy 数组:

features = np.array([[t1_pqm,t2_pqm,t1_elo,t2_elo,t1_era,t2_era,t1_bb9,t2_bb9,t1_fip,t2_fip,t1_ba,t2_ba,t1_ops,t2_ops,t1_so,t2_so]])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM