gpt4 book ai didi

tensorflow - 低密度区域中神经网络的回归精度

转载 作者:行者123 更新时间:2023-11-30 09:03:53 27 4
gpt4 key购买 nike

我正在开发一个神经网络,它需要预测 -1 到 1 之间的值。但是,我只关心刻度末端的值,例如 -1 到 -0.7 之间以及 0.7 到 1 之间。

例如,我不介意 0.6 是否被预测为 0.1。不过,我确实想知道它是 0.8 还是 0.9。

我的数据分布大致呈正态,因此在我不关心准确性的范围内还有更多样本。因此,培训过程似乎可能会提高中心的准确性。

我如何配置培训或设计我的预期结果来克服这个问题?

非常感谢。

最佳答案

您可以将观察值分配给十分位数,将其转化为分类问题,然后为损失中您关心的范围分配更大的权重,或者只是在训练期间对它们进行过度采样。默认情况下,我会在损失函数中权衡类别,因为它可以直接与加权指标匹配。如果您知道训练数据的分布与真实数据分布不同,则过采样会很有用。

要使用 Keras 在损失函数中为某些类分配更大的权重,您可以将 class_weight 参数传递给 Model.fit 。如果标签 0 是第一个十分位数,标签 9 是最后一个十分位数,则可以将第一个和最后两个十分位数的权重加倍,如下所示:

class_weight = {
0: 2,
1: 2,
2: 1,
3: 1,
4: 1,
5: 1,
6: 1,
7: 1,
8: 2,
9: 2
}
model.fit(..., class_weight=class_weight)

要对某些类进行过度采样,您应将它们包含在批处理中的频率高于类分布所建议的频率。实现此目的的最简单方法是使用 numpy.random.choice 采样观察索引,该选项具有一个可选参数来指定每个条目的概率。 (请注意,Keras Model.fit 还有一个 sample_weight 参数,您可以在其中为训练数据中的每个观察值分配权重,该权重将在计算损失函数时应用,但是预期的用例是通过标签的置信度来衡量样本,所以我认为它不适用于此处。)

关于tensorflow - 低密度区域中神经网络的回归精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57535133/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com