【问题标题】:Tensorflow bounded regression vs classificationTensorflow 有界回归与分类
【发布时间】:2019-01-24 19:06:30
【问题描述】:

作为我硕士论文的一部分,我的任务是预测一个标签整数 (0-255),它是一个角度的分箱表示。特征列也是整数,范围为 (0-255)。

到目前为止,我使用了自定义的 Tensorflow 层估计器,实现了一个 256 输出分类器,效果很好。但是,我使用的分类方法存在以下问题:

  • 我的分类模型认为,预测 3 而不是 28 与预测 27 和 28 一样好/坏

我的数据的数值区间/序数性质(不确定是哪一个)让我相信,如果我使用回归,我将获得更少错误预测或异常值的结果。

我的目标: 减少严重错误的预测异常值的数量

我的问题

  1. 回归是更好的方法,还是我可以改进我的 分类以包括之间的序数/间隔关系 我的标签?
  2. 如果我选择回归,有没有办法将我的预测输出限制在 0-255 之间(我知道我必须对预测的浮点值进行四舍五入)。

提前致谢。任何其他有助于我最好地解决问题的方法、建议或想法也非常有帮助。

如果我对问题的解释有任何不正确的假设或错误,请随时纠正我。

【问题讨论】:

    标签: tensorflow machine-learning neural-network classification regression


    【解决方案1】:

    问题 1:回归是更简单的方法,但是,您也可以使用分类并操纵损失函数,以降低与原始类“接近”的错误分类的损失。

    问题 2:用于限制预测的 tensorflow 命令是 tf.clip_by_value。您是否将所有 360 度映射到 [0,255]?在这种情况下,您将需要考虑边界情况,即您的估算器产生 -4 且真实值为 251,但它们实际上代表相同的值,因此损失应该为 0。

    【讨论】:

    • 感谢您的回复。我将 [-180 180] 映射到 [0 255],因此这需要按照您的建议考虑边界情况。我认为这是一个序数回归(除了名称之外的分类)问题,我将不得不使用嵌入,例如 [0 0 0...] = 0, [1 0 0 ...] = 1, [1 1 0.....]=2 等。这将在我的输出类中引入“大于”关系。但是,考虑到边界条件,这种嵌入可能需要调整,尽管我还不确定如何调整。
    • 您可以简单地翻转边界处的值:x = x - tf.nn.relu(x - 255)。这可能比序数回归更简单。
    猜你喜欢
    • 2016-02-27
    • 2017-08-29
    • 1970-01-01
    • 2019-10-12
    • 2013-02-21
    • 2019-11-23
    • 2018-08-08
    • 2017-03-31
    • 2020-07-20
    相关资源
    最近更新 更多