ValueError:检查目标时出错:预期(keras 序列模型层)具有 n 维,但得到的数组具有形状

Posted

技术标签:

【中文标题】ValueError:检查目标时出错:预期(keras 序列模型层)具有 n 维,但得到的数组具有形状【英文标题】:ValueError: Error when checking target: expected (keras Sequence model layer) to have n dimensions, but got array with shape 【发布时间】:2020-04-12 10:31:22 【问题描述】:

我已加载图像以训练我的模型识别这些图像中的一个特征。

Xtrain 是一个形状为 (1380,200,200,3 ) 的 numpy ndarray,包含 1380 张 200 x 200 像素的 RGB 格式图像

Ytrain 有目标。形状 (1380,2)

当我训练我的模型 (model.fit(Xtrain,Ytrain)) 时,我似乎在每个层上都得到了一个值错误。好像输入既是Xtrain,又是Ytrain...

ValueError:检查目标时出错:预期 batch_normalization_24 有 4 个维度,但得到了形状为 (1380, 2) 的数组

图片:

【问题讨论】:

【参考方案1】:

Keras 的批量归一化层输出的形状与其输入相同。由于您只有两个标签,因此顺序模型中的最后一层应该生成两个输出。您可以考虑添加Dense 层,例如:

model.add(Dense(2), activation='relu')

我还建议使用 print(model.summary()) 检查您的模型架构,并确保输入和输出与您的数据集匹配,反之亦然。

【讨论】:

以上是关于ValueError:检查目标时出错:预期(keras 序列模型层)具有 n 维,但得到的数组具有形状的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:检查目标时出错:预期activation_6 的形状为(70,)但得到的数组形状为(71,)

ValueError:检查目标时出错:预期dense_4的形状为(4,)但得到的数组形状为(1,)

ValueError:检查目标时出错:预期dense_3的形状为(1,)但得到的数组形状为(2,)

ValueError:检查目标时出错:预期activation_6具有形状(无,2)但得到的数组具有形状(5760,1)

ValueError:检查目标时出错:预期 activation_17 具有 2 维,但得到的数组形状为 (1, 256, 256, 3)

ValueError:检查目标时出错:预期 main_prediction 有 3 个维度,但得到了形状为 (1128, 1) 的数组