ValueError:检查输入时出错:预期 keras_layer_input 有 4 个维度,但得到了形状为 (10, 1) 的数组

Posted

技术标签:

【中文标题】ValueError:检查输入时出错:预期 keras_layer_input 有 4 个维度,但得到了形状为 (10, 1) 的数组【英文标题】:ValueError: Error when checking input: expected keras_layer_input to have 4 dimensions, but got array with shape (10, 1) 【发布时间】:2021-11-24 18:08:03 【问题描述】:

在这被标记为重复之前,我已经尝试了所有类似的问题,但其中大部分都没有解决,如果他们有答案,它不适用于我的问题。原始代码有10多个样本。

输入:模型输入 np.arrays 的列表。 sample_train_emb1 的长度 = 2

问题:model.fit() 错误ValueError: Error when checking input: expected keras_layer_input to have 4 dimensions, but got array with shape (10, 1)

这是我的 plot_model 图片:

model.fit() 看起来像这样:

model.fit(
    sample_train_emb1,
    sample_y_train,
    validation_data=(sample_valid_emb1, sample_y_valid),
    epochs=epoch,
    batch_size=batch_size,
    verbose=1,
)

谢谢!如果您需要更多详细信息来帮助我解决此问题,请告诉我。它有许多类似的帖子仍未解决,所以我认为它会对将来可能面临同样问题的任何人有所帮助。

到目前为止我已经尝试过:

交换两个功能。 将图像特征转换为 `TensorShape([Dimension(1), Dimension(224), Dimension(224), Dimension(3)]) 基于similar question's answer

【问题讨论】:

您似乎需要将 sample_train_emb1[0] 与 sample_train_emb1[1] 交换...您的图像也没有正确格式化,因为它们必须是 4d 数组 @MarcoCerliani 我已经尝试过交换它们。还是同样的错误。我还尝试基于此similar question's answer 使用tf.reshape(x,[-1, 224, 224, 3] 将图像格式化为TensorShape([Dimension(1), Dimension(224), Dimension(224), Dimension(3)]),但仍然出现相同的错误。 【参考方案1】:

我终于明白了。使用来自this post 的答案。

sample_train_emb1[1] = np.array([x for x in sample_train_emb1[1]])

希望这对将来的任何人都有帮助。

【讨论】:

以上是关于ValueError:检查输入时出错:预期 keras_layer_input 有 4 个维度,但得到了形状为 (10, 1) 的数组的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:检查输入时出错:预期的dense_26_input具有形状(45781,)但得到的数组具有形状(2,)

ValueError:检查输入时出错:预期 input_1 有 4 个维度,但得到的数组具有形状(无、无、无)

model.fit 给出 ValueError :检查输入时出错:预期的 conv2d 得到了形状为 () 的数组

ValueError:检查输入时出错:预期dense_11_input 具有3 维,但得到了形状为(0, 1) 的数组

ValueError:检查输入时出错:预期 lstm_1_input 具有 3 个维度,但得到的数组具有形状 (393613, 50)

ValueError:检查输入时出错:预期 permute_input 有 4 个维度,但得到了形状为 (1, 4) 的数组