我在 MNIST 手写数字数据库上训练了一个简单的 CNN,准确率达到 99%。我正在输入一堆手写数字,以及文档中的非数字。
我希望 CNN 报告错误,因此我设置了一个 90% 确定性的阈值,低于该阈值我的算法假定它正在查看的不是数字。
我的问题是 CNN 100% 确定了许多不正确的猜测。在下面的示例中,CNN 报告 100% 确定它是 0。我如何让它报告失败?
我对此的看法:也许 CNN 并不能 100% 确定这是零。也许它只是认为它不能是其他任何东西,并且它被迫选择(因为输出向量的归一化)。在我强迫它选择之前,有什么方法可以让我深入了解 CNN 的“想法”吗?
PS:我在带有 Python 的 Tensorflow 上使用 Keras。
编辑
因为有人问。这是我的问题的背景:
这来自我应用启发式算法来分割连接数字序列。在上图中,左边的部分实际上是一个 4,右边是一个没有底的 2 的曲线位。该算法应该逐步执行分段切割,当它找到一个可靠的匹配时,删除该切割并继续沿着序列移动。它在某些情况下非常有效,但当然它完全依赖于能够判断它正在查看的内容是否与数字不匹配。这是一个很好的例子。
我的下一个最佳选择是对所有排列进行推断并最大化组合得分。那更贵。