【问题标题】:How to detect if input does not match any of the output options如何检测输入是否与任何输出选项不匹配
【发布时间】:2020-07-29 17:58:47
【问题描述】:

我如何准确识别预测结果以确定输入是否匹配,或者输入是否与任何训练数据完全不同。

例如,如果我有一个模型可以识别“圆形”、“正方形”和其他形状,但用户输入了“乱七八糟的曲线”,我将如何阻止它意外匹配最高概率?

我的知识比较低,目前我的模型是这样的。

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #
=================================================================
dense (Dense)                (None, 512)               262656
_________________________________________________________________
dropout (Dropout)            (None, 512)               0
_________________________________________________________________
dense_1 (Dense)              (None, 256)               131328
_________________________________________________________________
dropout_1 (Dropout)          (None, 256)               0
_________________________________________________________________
dense_2 (Dense)              (None, 100)               25700
_________________________________________________________________
dropout_2 (Dropout)          (None, 100)               0
_________________________________________________________________
dense_3 (Dense)              (None, 5)                 505
=================================================================
Total params: 420,189
Trainable params: 420,189
Non-trainable params: 0
_________________________________________________________________

然后在进行预测时,我使用np.argmax 来获得最高概率。

通过查看和阅读一系列资源,我通过反复试验得出了这个布局。这方面的指导也非常受欢迎:)

【问题讨论】:

    标签: tensorflow tensorflow2.0 tensorflow.js


    【解决方案1】:

    在这种情况下,softmax 仍然可以提供帮助。它是一个近似值,而不是一个精确的单位步长函数。您始终可以检查两个最高项之间的差异,并将其设置为阈值以检查是否存在多个形状。

    例如,如果输入包含所有三种形状,则 softmax 的理想输出将是:

    [0.3333 0.3333 0.3333]
    

    考虑到一个相对训练好的模型,输出可能是这样的:

    [0.34, 0.30, 0.36]
    

    对于只有一个形状的输入,结果会非常不同。可能是这样的:

    [0.9999, 1e-6, 2e-6]
    

    在所有这些情况下,您都可以使用最可能的元素和第二最可能的元素之间的差异来识别“乱七八糟的曲线”。或者,也可以对 softmax 本身的输出进行阈值化,例如,softmax 值 > 0.9 表示形状,任何低于此值的都是无效输入。

    请注意,这些仍然是近似值,可能会导致一些错误。整个过程在很大程度上取决于您的模型的实际性能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      相关资源
      最近更新 更多