稀疏数据运算符¶
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 expand 将稀疏数据置换索引从表维度扩展到批次维度,适用于稀疏特征在不同 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。在每个 bin 中,使用两个参数来存储正样本的数量和落入此桶中的样本数量。因此,我们基本上得到了模型预测的直方图。结果,对于每个 bin,我们都有真实 CTR 的统计值 (`num_pos / num_example`
)。如果预校准预测落入相应的 bin,我们将使用此统计值作为最终校准预测。通过这种方式,如果我们有足够的样本,则每个 bin 内的预测应该得到良好的校准。也就是说,我们通过此校准模块得到了一个细粒度的校准模型。从理论上讲,如果我们有足够的 bin 和样本,则此校准层可以修复任何未校准的模型或预测。
/ / 直方图分箱校准模型的扩展,它基于一个特定特征和预测/ECTR 范围将数据划分为 / bin。在每个 bin 中,/ 使用两个参数来存储正样本的数量和落入此桶中的样本数量。因此,我们基本上得到了模型预测的直方图。/ 结果,对于每个 bin,我们都有真实 CTR 的统计值(num_pos / num_example)。我们使用此统计值 / 作为最终校准预测,如果预校准预测落入 / 相应的 bin。通过这种方式,如果我们有足够的样本,则每个 bin 内的预测 / 应该得到良好的校准。也就是说,我们通过此校准模块得到了一个细粒度的校准模型。从理论上讲,/ 如果我们有足够的 bin 和样本,则此校准层可以修复任何未校准的模型或预测。 / /
与上述相同,但接受通用的 “bin_boundaries”,假设其已排序。- 参数:
logit – 是在应用 Sigmoid 之前的输入张量。假设正权重校准用于校准目标,并且
positive_weight – 作为输入参数传递。bin 的数量自动从
bin_num_examples
和bin_num_positives
派生,所有这些都应具有相同的大小。 /lower/upper_bound – bin 的边界。 /
bin_ctr_in_use_after – 如果我们没有足够的样本,我们将使用 calibration_target 作为最终校准预测。仅在我们观察到 /
bin_ctr_in_use_after
个落入此 bin 的样本后,才使用 bin CTR 的统计值。默认值:0。 /bin_ctr_weight_value – bin CTR 统计值的权重。/ 当指定此值时,我们对统计 bin 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 的数量不再与
bin_num_examples
和bin_num_positives
相同,但它们仍然应该具有相同的大小。 /lower/upper_bound – bin 的边界。 /
bin_ctr_in_use_after – 如果我们没有足够的样本,我们将使用 calibration_target 作为 / 最终校准预测。 / 仅在我们观察到 /
bin_ctr_in_use_after
个落入此 bin 的样本后,才使用 bin CTR 的统计值。默认值为0
。/@parambin_ctr_weight_value bin CTR 统计值的权重。当 / 指定此值时,我们对统计 bin 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.