稀疏資料運算子¶
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 索引,從表格維度到批次維度,適用於跨排名之稀疏特徵具有不同批次大小的情況。
- 參數:
permute – 表格層級的 permute 索引。
input_offsets – 表格層級長度的互斥偏移。
output_offsets – 表格層級排列長度的互斥偏移。此運算透過將其對應表格的每個包連續映射到特徵排列後批次所在的的位置,將 permute 從表格層級擴展到批次層級。我們將導出表格和批次的偏移陣列,以計算輸出 permute。
- 返回:
輸出結果遵循以下公式
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 中,使用兩個參數來儲存正例的數量和落入此 bucket 的範例數量。因此,我們基本上擁有模型預測的直方圖。因此,對於每個 bin,我們都有真實 CTR 的統計值 (
num_pos / num_example
)。如果預校準預測落入對應的 bin,我們會使用此統計值作為最終校準的預測。透過這種方式,如果我們有足夠的範例,則每個 bin 中的預測都應良好校準。也就是說,我們透過此校準模組獲得了細粒度的校準模型。理論上,如果我們有足夠的 bin 和範例,則此校準層可以修復任何未校準的模型或預測。
/ / 直方圖分箱校準模型的延伸,它根據一個特定的特徵和預測/ECTR 範圍將資料分成 / bin。在每個 bin 中,/ 使用兩個參數來儲存正例的數量和 / 落入此 bucket 的範例數量。因此,我們基本上擁有模型預測的直方圖。/ 因此,對於每個 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。