def do_batch_sampling(pp_unl, batch_size):
"""
return batch_size number of of item, sampled by uncertainty
each with a label sampled from prob
"""
n = pp_unl.shape[0]
uncertain = np.abs(pp_unl[:,0] - 0.5)
if n < batch_size:
batch_size = n
sam_weight = np.exp(20 * (1-uncertain))
items = np.random.choice(n, batch_size, replace = False, p = sam_weight*1.0 / np.sum(sam_weight) )
labels = np.zeros_like(items)
for (i,item) in enumerate(items):
if np.random.random() < pp_unl[item, 1]:
l = 1
else:
l = 0
labels[i] = l
return (items, labels)
评论列表
文章目录