首页 文章

卷积神经网络训练

提问于
浏览
0

我有一个关于卷积神经网络( CNN )训练的问题 .

我已经设法使用 tensorflow 训练网络,该网络接收输入图像(1600像素)并输出与之匹配的三个类别中的一个 .

使用受过训练的类的变化来测试网络可以获得良好的结果 . 然而;当我给它一个不同的-thourth-图像(不包含任何经过训练的3图像)时,它总是返回一个类的随机匹配 .

我的问题是,我如何训练网络来分类图像不属于三个训练图像中的任何一个?一个类似的例子,如果我训练一个网络对抗 mnist 数据库,然后给它一个字符"A"或"B" . 有没有办法区分输入不属于任何一个类?

谢谢

4 回答

  • 0

    您的模型将始终像您的标签一样进行预测,例如,如果您使用MNIST数据训练模型,当您进行预测时,预测将始终为0-9,就像MNIST标签一样 .

    你可以做的是先用2个类训练不同的模型,你可以在其中预测图像是属于数据集A还是B. E.x.对于MNIST数据,您将所有数据标记为1并添加来自其他不同来源(不是0-9)的数据并将其标记为0.然后训练模型以查找图像是否属于MNIST .

  • 0

    卷积神经网络(CNN)预测训练后定义的类的结果 . 无论准确性如何,CNN总是从其中一个类返回 . 我遇到过类似的问题,你能做的就是检查准确性值 . 如果准确度低于某个阈值,则它属于无类别 . 希望这可以帮助 .

  • 0

    您可能有三个输出节点,并选择最大值(单热编码) . 这有点不幸,因为它的输出数量很少 . 未经确认的输入往往会产生相当随机的输出 .

    现在,有3个输出,粗略地说,你可以获得7个结果 . 您可能获得单个高值(3种可能性),但未识别的输入也可能导致2个高输出(也有3种可能)或大致相等的输出(也有3种可能性) . 所以有一个很好的机会(~3 / 7)随机输入在输出节点上产生一个模式,你只能期望识别输入 .

    现在,如果您有15个类,因此有15个输出节点,那么您将查看大约32767个未识别输入的可能结果,其中只有15个对应于预期的单热结果 .

    这是缺乏培训数据的基础 . 如果您的训练集中有3个类以外的示例,您可以将其转储到第4个“其他”类别中并进行训练 . 这本身并不是一个可靠的指示,因为通常理论上的“其他”集是巨大的,但是现在你有两种互补的方式来检测其他输入:通过“其他”输出节点或通过11个模糊输出之一 .

  • 1

    另一个解决方案是检查CNN在给出其他内容时通常给出的结果 . 我相信最后一层必须是softmax,你的CNN应该返回三个给定类的概率 . 如果这些概率都不接近1,这可能表明这是其他事情,假设您的CNN训练有素(在预测错误标签时必须因过度自信而被罚款) .

相关问题