numpy - 简单的 ML 算法无法工作 : ValueError: Error when checking input: expected dense_4_input to have shape (None, 5) 但得到了形状为 (5, 1) 的数组

标签 numpy machine-learning keras

我有一个令人难以置信的简单算法,该算法出错了,“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/

相关文章:

python - 梯度下降未按预期工作

python - 在Python多维列表中存储TensorFlow网络权重

python - 如何保存 Keras 回归模型?

initialization - 使用KerasRegressor指定输入参数

python - 使用 np.where 遍历多个数组

python - numpy 中基于索引的多重性加法

python - 寻找 numpy.linalg.norm 的 3D 版本

python - scipy -- 如何积分线性插值函数?

algorithm - 机器学习 : Supervised learning to learn & predict next RSA code

python - Keras 中图像分割的逐像素损失权重