tensorflow - Keras错误: expected dense_input_1 to have 3 dimensions

标签 tensorflow machine-learning neural-network deep-learning keras

我正在 Keras 中尝试一个简单的模型,我想将其作为输入,大小为 5x3 的矩阵。在下面的示例中,这是在添加第一个密集层时使用 input_shape=(5, 3) 指定的。

from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.optimizers import Adam
import numpy as np


model = Sequential()
model.add(Dense(32, input_shape=(5, 3)))
model.add(Activation('relu'))
model.add(Dense(32))
model.add(Activation('relu'))
model.add(Dense(4))


adam = Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
model.compile(loss='mean_squared_error', optimizer=adam)


x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15]])


y = model.predict(x)

但是,当我运行代码时,model.predict() 函数给出以下错误:

ValueError: Error when checking : expected dense_input_1 to have 3 dimensions, but got array with shape (5, 3)

但我不明白这个错误。 x 的形状是 (5, 3),这正是我告诉第一个密集层期望的输入。为什么它需要三个维度?看起来这可能与batch size有关,但我认为input_shape只是指网络的形状,与batch size无关......

最佳答案

问题出在这里:

model.add(Dense(32, input_shape=(5, 3)))

应该是:

model.add(Dense(32, input_shape=(3,)))

第一个示例维度不包含在input_shape中。还因为它实际上取决于网络拟合期间设置的batch_size。如果你想指定你可以尝试:

model.add(Dense(32, batch_input_shape=(5, 3)))

编辑:

从您的评论中我了解到您希望您的输入具有 shape=(5,3) 在这种情况下您需要:

  1. 通过设置 reshape 您的x:

    x = x.reshape((1, 5, 3))
    

    其中第一个维度来自示例。

  2. 您需要在某个阶段展平您的模型。这是因为如果没有它,您将通过网络传递 2d 输入。我建议您执行以下操作:

    model = Sequential()
    model.add(Dense(32, input_shape=(5, 3)))
    model.add(Activation('relu'))
    model.add(Dense(32))
    model.add(Activation('relu'))
    model.add(Flatten())
    model.add(Dense(4))
    

关于tensorflow - Keras错误: expected dense_input_1 to have 3 dimensions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43233169/

相关文章:

python - 使用 sklearn 和 Spark 时的轮廓分数不同

python - Python MLPClassifier值错误

machine-learning - 机器学习算法: which algorithm for which issue?

machine-learning - 如何找到隐藏层的数量以及每个隐藏层中神经元的数量进行回归?

python - 为什么我的神经网络显示奇怪的结果?

python - 将tensorflow/keras模型转换为tensorflow lite模型时出现问题

python - Keras:计算模型输出与输入返回的导数 [无]

numpy - 如何在 tensorflow 中打印完整(未截断)的张量?

tensorflow - TensorFlow开了多少个进程?

machine-learning - 为什么当我使用更多变量时,ROC 中的曲线下面积 (AUC) 会减少?