python加权随机库_加权随机采样WeightedRandomSampler

WeightedRandomSampler是Python中用于加权随机采样的类,根据给定的样本权重进行采样。权重可以是任意比值,它控制了样本被采样的概率。初始化时,num_samples指定采样数量,replacement决定是否放回。迭代器返回的索引值是按权重比例随机生成的,权重大的样本更可能被多次采样。例如,权重为0的样本不会被采样,权重大的样本会被多次抽取。WeightedRandomSampler广泛应用于需要加权随机选择样本的场景。
摘要由CSDN通过智能技术生成

其实在WeightedRandomSampler中,采样的权重针对的是每一个样本,所以我们可以确定好每个类对应的权重,再一一对应到样本上。并且,权重其实就是比值,num_samples就是一次采样的数目,里面的比值其实就是权重的比值。

class WeightedRandomSampler(Sampler):

r"""Samples elements from ``[0,..,len(weights)-1]`` with given probabilities (weights)."""

def __init__(self, weights, num_samples, replacement=True):

# ...省略类型检查

# weights用于确定生成索引的权重

self.weights = torch.as_tensor(weights, dtype=torch.double)

self.num_samples = num_samples

# 用于控制是否对数据进行有放回采样

self.replacement = replacement

def __iter__(self):

# 按照加权返回随机索引值

return iter(torch.multinomial(self.weights, self.num_samples, self.replacement).tolist())

对于Weighted Random Sampler类的__init__()来说,replacement参数依旧用于控制采样是否是有放回的;num_sampler用于控制生成的个数;

weights参数对应的是“样本”的权重

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>