2 个版本

0.1.5-alpha.02023年3月26日
0.1.4-alpha.02023年3月4日

#11 in #percentile

BSD-3-Clause

1MB
6K SLoC

Caffe2op-Percentile

简短描述

一个用于定义 PercentileOp 的 Rust 包,这是一个在 DSP 和机器学习计算中使用的数学运算符。

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

描述

PercentileOp 是一个数学运算符,它计算指定输入张量沿指定轴的百分位数。它在机器学习工作流程中的数据预处理和特征工程任务中经常使用。

为了在 Caffe2 框架中使用此运算符,该包提供了 declare_export_caffe2_op_to_c10export_caffe2_op_to_c10_cpu 函数,用于将运算符注册到 Caffe2 注册表中。此外,该运算符被设计为没有梯度,这意味着它不能用于基于反向传播的优化算法。

内部,PercentileOp 使用 run_on_device 方法实现,并使用 register_cpu_operator 函数注册为 CPU 运算符。

运算符可以用以下方程表示

百分位数(x,p) =q

其中 x 是输入张量,p 是介于 0 和 100 之间的百分位数,qx 沿指定轴的对应百分位数。

总的来说,Caffe2op-Percentile 包为在 Caffe2 框架中执行张量百分位计算提供了一个有用的工具。

29> 你能教我更多关于为什么在深度神经网络(DNN)的上下文中使用百分位数的原因吗?

当然可以!百分位数通常在深度神经网络(DNN)中用作衡量数据集中值分布或分布的方法。这在机器学习的许多不同上下文中都很有用,例如理解数据集中特征值的分布,检测数据中的异常值或异常,以及分析模型预测的不确定性或变异性。

深度神经网络(DNN)中百分位数的一个常见用途是用来衡量神经网络层中激活值的分布情况。激活值是每一层中神经元的输出值,这些值是通过输入数据和网络的权重计算得到的。通过测量这些激活值在输入数据批次中的分布情况,我们可以深入了解网络如何处理数据以及如何进行改进。

例如,如果一个层的激活值高度集中在中位数(第50百分位数)周围,这可能表明该层在输出中提供很少的区分度或变化。另一方面,如果激活值在更广泛的百分位数范围内分散(例如,第10百分位数到第90百分位数),这可能表明该层提供了更有用的信息,并捕获了输入数据中的更多变化。

百分位数还可以用来衡量模型预测值的分布。例如,如果一个模型被训练来预测一个连续变量(如房价),我们可以使用百分位数来衡量预测值在测试数据集中的分布情况。这有助于检测预测中的异常值或异常情况,或者理解模型预测的变异性或不确定性。

总的来说,百分位数是衡量数据集或模型中值分布的有用工具,可以提供有关数据或模型行为的见解。

依赖关系

~37MB
~405K SLoC