3个版本

0.1.5-alpha.02023年3月25日
0.1.4-alpha.02023年3月3日
0.1.3-alpha.02023年3月2日

#7 in #estimating

BSD-3-Clause

710KB
5K SLoC

caffe2op-bisect 库中的 BisectPercentile 操作符是一个数学操作符,用于DSP和机器学习计算中,用于估计数据集中给定 y 百分位数处的 x 值。这是通过迭代地将数据集二分并检查结果子集的百分位数,直到在给定的容忍度内达到所需的 y 百分位数来实现的。

注意:该库目前正在从C++转换为Rust,某些函数体可能仍在翻译过程中。

BisectPercentile 操作符输入表示数据集的张量、表示感兴趣百分位的张量以及表示容忍度的可选张量。它输出表示感兴趣百分位对应的 x 值的张量。

该操作符使用二分法和插值技术来实现,以有效地估计感兴趣的百分位数。二分法涉及迭代地二分数据集并选择包含目标百分位数的一半,直到达到所需的容忍度。插值用于估计所选一半中目标百分位数处的 x 值。

BisectPercentile 操作符适用于各种应用,包括异常值检测、数据分析以及机器学习。它提供了一种高效且准确的方法来估计大型数据集中的百分位数。

caffe2op-bisect 库还提供了 BisectPercentileOpBisectPercentileOpEpsilon 结构体,它们实现了 BisectPercentile 操作符作为Caffe2操作符。这些可以与其它Caffe2操作符结合使用,构建深度神经网络架构,用于图像分类和目标检测等任务。

16> 谢谢!你能帮我理解在深度神经网络语境中如何应用估计感兴趣百分位数的二分法吗?

二分法是一种用于找到函数根的数值算法。在估计深度神经网络中的百分位数的语境中,二分法可以用于找到给定值集中某一百分位数的值。

更具体地说,rust crate caffe2op-bisect 中的 BisectPercentileOp 实现了二分法来估计给定值集的指定百分位数。BisectPercentileOp 接收一个值张量和百分位数,并输出该百分位数的估计值。

算法通过首先按升序对输入值的张量进行排序,然后定义一个函数,该函数接收百分位数的候选值并返回张量中小于或等于候选值的值数与目标百分位数之间的差值。这个函数可以看作是一个“带符号距离”函数,其中符号表示候选值是否过高或过低。

然后,二分法通过将搜索空间一分为二并评估距离函数在中间点的符号来反复二分搜索空间。根据符号,算法要么在搜索空间的左侧或右侧继续搜索,直到距离函数足够接近零,表明所需的百分位数已找到。

总之,通过定义基于输入值张量和目标百分位数的距离函数,并迭代二分搜索空间直到距离函数足够小,可以使用二分法估计深度神经网络中感兴趣的百分位数。

依赖关系

~36MB
~387K SLoC