【问题标题】:Keras and Python 3.6: Error when checking input for Sequential model [duplicate]Keras 和 Python 3.6:检查顺序模型的输入时出错 [重复]
【发布时间】:2018-08-22 13:43:32
【问题描述】:

不知何故,我在 Keras 库中发现了一个非常奇怪的错误。

我的学习方法包括一个三层神经网络:一个具有 130,517 个单元(输入大小)的输入层、一个 10,000 个单元的隐藏层和一个 2 个单元的输出层。

在代码期间,我运行了一个批处理学习(我使用了partial_fit 函数)但代码反复抛出相同的错误:

{ValueError} 检查输入时出错:预期的 dense_1_input 有 形状 (130517,) 但得到了形状为 (1,) 的数组

我再次查看了输入维度,发现确实和我想的一样,有130517个维度。

这是调试时变量的图片,可以看到np.array(X[0])的形状是130,517:

无论如何,我附上了神经网络的初始化代码,以及调用partial_fit的代码:

    def initClassifier(self):
       self.classifier.add(Dense(100000, input_dim=130517, activation='relu'))
       self.classifier.add(Dense(2, activation='softmax'))
       self.classifier.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])


    def partial_fit(self, X, y, classes):
        self.classifier.train_on_batch(np.array(X[0]), np.array(y))

有人有解决办法吗?
会不会是 Keras 代码中的错误?

【问题讨论】:

    标签: python machine-learning neural-network keras deep-learning


    【解决方案1】:

    在训练时,Keras 希望您的数据包含批量大小的维度。在您的情况下,这意味着数据的形状应为(batch_size, 130517)。但是,您传递了一个形状为(130517) 的np array,这会导致您的错误。您可以按如下方式重塑数据以包含批处理形状:

    X_reshaped = X[0].reshape(1, -1)

    【讨论】:

    • 谢谢!我尝试解决问题两个多小时
    猜你喜欢
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    相关资源
    最近更新 更多