我有一个令人难以置信的简单算法,该算法出错了,“ValueError:检查输入时出错:预期dense_4_input具有形状(无,5)但得到形状为(5,1)的数组”...... 这是我正在运行的代码。
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense
x = np.array([[1],[2],[3],[4],[5]])
y = np.array([[1],[2],[3],[4],[5]])
x_val = np.array([[6],[7]])
x_val = np.array([[6],[7]])
model = Sequential()
model.add(Dense(1, input_dim=5))
model.compile(optimizer='rmsprop', loss='mse')
model.fit(x, y, epochs=2, validation_data=(x_val, y_val))
最佳答案
有两个问题:
首先:正如输出所示:“ValueError:检查输入时出错:预期的dense_4_input具有形状(None, 5),但得到的数组具有形状(5, 1)”
这意味着神经网络需要一个形状为 (*, 5) 的数组。我想用星号表明用户可以自由选择尺寸。假设您有大量数据,并且每个示例都是形状 (1, 5) 的向量,您可以将它们全部堆叠在下面并将一大块数据传递给神经网络,它会知道如何处理它。因此,您必须将 x
设为行向量,如下所示:
x = np.array([[1,2,3,4,5]])
另请参阅 Keras docs- Specifying the input shape .
第二:您将第一层的输出指定为 1。这意味着,5 维输入将仅连接到一个神经元。然而,您的输出向量 y
有 5 个值。所以你的输出向量维度和你的神经网络输出不适合在一起。
所以你必须使用标量y
:
y = np.array([1])
此外,您的验证数据和训练数据应具有相同的维度。另外,您的代码中存在拼写错误:y_val
从未定义。
关于numpy - 简单的 ML 算法无法工作 : ValueError: Error when checking input: expected dense_4_input to have shape (None, 5) 但得到了形状为 (5, 1) 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46858890/