稀疏数据运算符¶
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 将稀疏数据置换索引从表维度扩展到批次维度,用于稀疏特征在不同等级(rank)上具有不同批次大小的情况。
- 参数:
permute – 表级别的置换索引。
input_offsets – 表级别长度的独占偏移量。
output_offsets – 表级别置换后长度的独占偏移量。该操作通过将每个包及其对应的表连续映射到特征置换后批次所在的位置,从而将置换从表级别扩展到批次级别。我们将推导出表和批次的偏移数组来计算输出置换。
- 返回:
输出遵循以下公式
output_permute[table_offset[permute[table]] + batch] <- bag_offset[batch]
CPU 运算符¶
-
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)¶
将预测范围(例如 [0, 1])划分为 B 个区间(bin)。在每个区间中,使用两个参数来存储正样本数和落入该区间的样本数。因此,我们基本上得到了一个模型预测的直方图。结果是,对于每个区间,我们都有一个真实点击率(CTR)的统计值(
num_pos / num_example
)。如果预校准预测值落入相应区间,我们便使用这个统计值作为最终的校准预测值。这样,如果我们有足够的样本,每个区间内的预测值都应该得到很好的校准。也就是说,通过这个校准模块,我们得到了一个细粒度的校准模型。理论上,如果我们有足够多的区间和样本,这个校准层可以修复任何未校准的模型或预测。
/ / 直方图分箱校准模型的扩展,它根据一个特定的特征和预测/ECTR范围将数据划分到/区间中。在每个区间中,/使用两个参数来存储正样本数和落入/该区间的样本数。因此,我们基本上得到了一个模型预测的直方图。/结果是,对于每个区间,我们都有一个真实CTR(num_pos / num_example)的统计值。/如果预校准预测值落入/相应的区间,我们便使用这个统计值/作为最终的校准预测值。这样,如果我们有足够的样本,每个区间/内的预测值都应该得到很好的校准。也就是说,我们通过这个校准模块得到了一个/细粒度的校准模型。理论上,/如果我们有足够多的区间和样本,这个校准层可以修复任何未校准的模型或预测。/ /
与上述相同,但接受通用的“bin_boundaries”,假定其已排序。- 参数:
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 进行加权求和:/
/ final_calibrated_prediction = bin_ctr_weight * bin_ctr + (1 - / bin_ctr_weight) * calibration_target /
/ 默认值:1.0 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);logit – 是应用 Sigmoid 之前的输入张量。/ / 假设使用正权重校准作为校准目标,并且 /
positive_weight
作为输入参数传入。/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
。/@param bin_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]
- 返回:
[calibrated_prediction, bin_ids]
/- 返回:
calibrated_prediction。