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) 的数组