检查模型目标时出错:期望dense_24具有形状...但是在Keras中得到了具有形状的数组...

Mon*_*eck 8 arrays keras

我无法理解这条错误消息试图告诉我的内容.

看一下我模型的总结,我看的是最后几层.

在此输入图像描述

但是当我适应我的模型时,我得到了这个:

在此输入图像描述

我不明白.如果我仔细阅读,Keras似乎在说,"我查看了验证集的标签(目标),明智地,这让我觉得模型中的最后一层应该被塑造(None,2).但是,而不是在模型中实际获得最后一层形状(无,2),该层由一个实际数组组成.这是另一种形状."

这毫无意义.

我认为我怀疑这个错误确实应该说,一般来说:

"ValueError: Error when checking model target: although dense_n has shape (x, y), the shape of the target, (a,b), in incompatible." .

有人关心同意还是不同意?谢谢.

(有一个类似的问题在这里,但不是非常有帮助.)

Dan*_*ler 3

我不确定你期望的答案是否是这样,但是......

首先:我同意 - 错误消息看起来很奇怪,它应该讨论dense_24和目标数组之间的不兼容性。

现在,为了解决您的问题,您应该重塑目标数组或在最后创建一个不同的 Dense 以匹配您的数组。

关于目标数组,对于两类分类,其形状应为:

  • (46000,2) 如果您的分类使用两个值,一个用于 A 类的可能性,另一个用于 B 类的可能性
  • (46000,1) 如果您的分类使用 0 个 A 类和 1 个 B 类的单个值(在这种情况下,您的密集层应该是 (None,1))

我认为最简单的解决方案:

  • 不要Dense(2,...)在模型末尾使用Dense(1, activation='sigmoid').

为什么?因为您的目标数据的形状类似于 (46000,1),这意味着两个类别只有一个数字。0 是一个类,1 是另一类。