稀疏数据操作符¶
CUDA 操作符¶
-
at::Tensor expand_into_jagged_permute_cuda(const at::Tensor &permute, const at::Tensor &input_offsets, const at::Tensor &output_offsets, int64_t output_size)¶
expand_into_jagged_permute 将稀疏数据排列索引从表格维度扩展到批次维度,用于稀疏特征在不同等级上具有不同批次大小的情况。
- 参数::
permute – 表格级别的排列索引。
input_offsets – 表格级别长度的独占偏移量。
output_offsets – 表格级别排列长度的独占偏移量。此操作通过将每个包与其对应表格连续映射到批次在特征排列后所处的批次位置来将排列从表格级别扩展到批次级别。我们将推导出表格和批次的偏移量数组以计算输出排列。
- 返回::
输出遵循以下公式
output_permute[table_offset[permute[table]] + batch] <- bag_offset[batch]
CPU 操作符¶
-
std::tuple<at::Tensor, at::Tensor> histogram_binning_calibration_cpu(const at::Tensor &logit, const at::Tensor &bin_num_examples, const at::Tensor &bin_num_positives, double positive_weight, double lower_bound = 0.0, double upper_bound = 1.0, int64_t bin_ctr_in_use_after = 0, double bin_ctr_weight_value = 1.0)¶
将预测范围(例如,[0, 1])划分为 B 个箱。在每个箱中,使用两个参数来存储正例的数量和落入此箱的示例数量。因此,我们基本上对模型预测进行了直方图。结果,对于每个箱,我们都有一个真实 CTR 的统计值(
num_pos / num_example
)。如果预校准预测落入相应箱,我们将使用此统计值作为最终校准后的预测。通过这种方式,如果我们有足够的示例,则每个箱内的预测应该得到很好的校准。也就是说,通过此校准模块,我们拥有一个细粒度的校准模型。从理论上讲,如果我们有足够的箱和示例,此校准层可以修复任何未校准的模型或预测。- 参数::
logit – 是应用 Sigmoid 之前的输入张量。假设使用正权重校准作为校准目标,并且
positive_weight – 作为输入参数传递。箱的数量会自动从
bin_num_examples
和bin_num_positives
中推导出,所有这些都应该是相同的大小。lower/upper_bound – 箱的边界。
bin_ctr_in_use_after – 如果我们没有足够的示例,我们将使用 calibration_target 作为最终校准后的预测。只有在我们观察到
bin_ctr_in_use_after
个落入此箱的示例后,才使用箱 CTR 的统计值。默认值:0。bin_ctr_weight_value – 箱 CTR 统计值的权重。当指定此权重时,我们将对统计箱 CTR 和 calibration_target 进行加权求和
默认值:1.0final_calibrated_prediction = bin_ctr_weight * bin_ctr + (1 - bin_ctr_weight) * calibration_target
- 返回::
[calibrated_prediction, bin_ids]
-
std::tuple<at::Tensor, at::Tensor> generic_histogram_binning_calibration_by_feature_cpu(const at::Tensor &logit, const at::Tensor &segment_value, const at::Tensor &segment_lengths, int64_t num_segments, const at::Tensor &bin_num_examples, const at::Tensor &bin_num_positives, const at::Tensor &bin_boundaries, double positive_weight, int64_t bin_ctr_in_use_after = 0, double bin_ctr_weight_value = 1.0)¶
这是直方图分箱校准模型的扩展,它根据一个特定特征和预测/ECTR 范围将数据划分为箱。在每个箱中,使用两个参数来存储正样本的数量和落入此箱的样本数量。因此,我们基本上获得了模型预测的直方图。因此,对于每个箱,我们都有一个真实 CTR 的统计值(num_pos / num_example)。如果预校准预测落在相应的箱中,我们将使用此统计值作为最终校准的预测。通过这种方式,如果我们有足够的样本,则每个箱内的预测应该得到很好的校准。也就是说,我们通过此校准模块获得了细粒度的校准模型。理论上,如果我们有足够的箱和样本,此校准层可以修复任何未校准的模型或预测。
假设使用正权重校准作为校准目标,并且
positive_weight
作为输入参数传递。
与上面相同,但接受通用的“bin_boundaries”,它被假定为已排序。
- 参数::
logit – 是应用 Sigmoid 之前的输入张量。
segment_value/lengths – KeyJaggedTensor 中的值和长度。假设长度的值为 0 或 1。
num_bins – 箱的数量不再与
bin_num_examples
和bin_num_positives
相同,它们的大小都应该保持一致。lower/upper_bound – 箱的边界。
bin_ctr_in_use_after – 如果没有足够的样本,我们将使用 calibration_target 作为最终校准的预测。只有在我们观察到
bin_ctr_in_use_after
个落入此箱的样本后,才使用箱 CTR 的统计值。默认值为0
。@parambin_ctr_weight_value 箱 CTR 统计值的权重。当指定此值时,我们对统计箱 CTR 和 calibration_target 执行加权求和默认值:final_calibrated_prediction = bin_ctr_weight * bin_ctr + (1 - bin_ctr_weight) * calibration_target.
1.0
- 返回::
[calibrated_prediction, bin_ids]
- 返回::
校准后的预测。