为什么我不能指定正确的 NumPy 大小?

数据挖掘 Python 神经网络 喀拉斯 麻木的
2022-02-17 08:49:32

在网络(Keras 的模型,Sequential)中,输入层必须有 4 个神经元。输入必须是 1 个列表,长度为 4,每个元素是一个数字。

print("SHAPE:", np.array([1, 1, 1, 1]).shape)

self.model.fit(np.array([1, 1, 1, 1]),
self.rightAnswer, 
epochs = 1,
batch_size = 1)

这是结论:

SHAPE: (4,)

ValueError: Error when checking input: expected dense_1_input to have shape (4,) but got array with shape (1,)

为什么会发生这种情况,我该如何解决?

1个回答

Keras 需要您传递比错误消息中多一个维度:批处理维度

IE

如果您的模型要求每个样本的输入形状为 ,(4,)并且您有 1000 个训练样本,则需要为其提供(1000, 4).

在您的情况下,由于您只想用一个样本喂它,您需要传递一个(1, 4). 尝试self.model.fit(np.array([[1, 1, 1, 1]]))(注意一个额外的括号使数组的形状变为(1, 4))。