【问题标题】:One category classification at KerasKeras 的一类分类
【发布时间】:2018-05-29 22:14:10
【问题描述】:

我只需要在 Keras 上创建 CNN 来识别一种特定类型的图像,在我的例子中是信用卡。所以看来我只需要一个输出 sigmoid 神经元。但问题是如何训练这样的网络,因为我只有一个目标类别。或者我应该添加带有猫和狗的随机图像来告诉 NN 这不是信用卡。我什至不确定它是二进制分类。我还没有任何代码,但首先我会尝试 Keras 文档中的 VGG-16。

【问题讨论】:

    标签: keras


    【解决方案1】:

    鉴于您将 VGG-16 与迁移学习结合使用,一种直接的方法是将您的信用卡图像添加到 ImageNet 数据中。您可以简单地标记所有其他图像 not credit card,并微调两个输出神经元上的 softmax(credit cardnot credit card)或表示图像是信用卡的信心的 sigmoid 激活。

    这将对一组不同的替代图像进行微调,最终会产生更强大和更准确的分类器。

    但是,如果您正在考虑将其部署到实际用例中,则需要仔细考虑 ImageNet 图像格式(分辨率等)与预处理之间的映射以及用例中的格式。 ImageNet 上的测试结果可能会优于真实数据的结果。理想的做法是从用例中收集非信用卡示例并使用这些示例进行微调。

    【讨论】:

    • 感谢您的回复。如果我做对了,如果我使用一个带有 sigmoid 激活的输出,我可以将输出值与某个边界值进行比较,例如 0.7。如果输出 > 0.7 则可能是信用卡,如果
    • 没错。例如,您可以根据您对误报和误报的容忍度来选择该阈值。
    • 你能告诉我一些这种模型的例子吗?也许来自 Keras 文档或其他东西。我不确定我是否见过这样的模型:(
    • Sure-simple binary model,您的损失函数是二元交叉熵。正常训练,然后predict 方法会为您提供一系列预测成为信用卡的概率。然后,您可以定义一个简单的函数来计算不同概率阈值[0, .05, .1, ..., .95] 的误报和误报,并选择最适合您目标的函数。这是主观的——例如,您想非常确定您识别的阳性病例是真正阳性的。
    猜你喜欢
    • 2019-01-23
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 2017-10-25
    相关资源
    最近更新 更多