besskge.negative_sampler.TripleBasedShardedNegativeSampler
- class besskge.negative_sampler.TripleBasedShardedNegativeSampler(negative_heads, negative_tails, sharding, corruption_scheme, seed, mask_on_gather=False, return_sort_idx=False)[source]
Return (possibly triple-specific) predetermined negative entities.
Initialize triple-based negative sampler.
- Parameters:
negative_heads (
Optional
[ndarray
[Any
,dtype
[int32
]]]) – shape: (N, n_negative) Global entity IDs of negative heads, specific for each triple (N=n_triple) or for all of them (N=1).negative_tails (
Optional
[ndarray
[Any
,dtype
[int32
]]]) – shape: (N, n_negative) Global entity IDs of negative tails, specific for each triple (N=n_triple) or for all of them (N=1).sharding (
Sharding
) – seeRandomShardedNegativeSampler.__init__()
corruption_scheme (
str
) – seeRandomShardedNegativeSampler.__init__()
seed (
int
) – seeRandomShardedNegativeSampler.__init__()
mask_on_gather (
bool
) – If True, shape the negative mask to be applied on the device where negative entities are gathered, instead of the one where they are scored. Set to True only when usingbesskge.bess.TopKQueryBessKGE
. Default: False.return_sort_idx (
bool
) – If True, return for each triple in the batch the sorting indices to recover the same ordering of negatives as innegative_heads
,negative_tails
. Default: False.
- pad_negatives(negatives, shard_counts, padded_shard_length)[source]
Divide negatives based on shard and pad lists to same length.
- Parameters:
negatives (
ndarray
[Any
,dtype
[int32
]]) – shape: (N, n_negative) Negative entities, each row already sorted in shard order (N = 1, n_triple).shard_counts (
ndarray
[Any
,dtype
[int64
]]) – shape: (N, n_shard) Number of negatives per shard.padded_shard_length (
int
) – The size to which each shard list is to be padded.
- Return padded_negatives:
shape: (N, n_shard, padded_shard_length) The padded shard lists of negatives.
- Return mask:
shape: (N, n_negative) Indices of true negatives in
padded_negatives.view(N,-1)
.- Return type:
Tuple
[ndarray
[Any
,dtype
[int32
]],ndarray
[Any
,dtype
[bool_
]]]
- shard_negatives(negatives)[source]
Split negative entities into corresponding shards.
- Parameters:
negatives (
ndarray
[Any
,dtype
[int32
]]) – shape: (N, n_negatives) Negative entities to shard (N = 1, n_triple).- Return shard_neg_counts:
shape: (N, n_shard) Number of negative entities per shard.
- Return sort_neg_idx:
shape: (N, n_negatives) Sorting index to cluster negatives in shard order.
- Return type:
Tuple
[ndarray
[Any
,dtype
[int64
]],ndarray
[Any
,dtype
[int32
]]]