我有一个数据集X,其中的每个数据点(每行)都有特定的顺序,为了完全打乱X,我使用了如下代码:
shufX = torch.randperm(len(X))
X=X[shufX]
假设我只想进行轻微的混洗(可能是移动一些数据点的位置)而不进行完全混洗,我希望有一个参数p,这样当p=0时,它不进行混洗,当p=1时,它进行完全混洗,就像代码about那样,这样,我就可以将混洗的程度调整为轻微或更广泛。
我尝试过这样做,但意识到这可能会导致重复的数据点,这不是我想要的。
p = 0.1
mask = torch.bernoulli(p*torch.ones(len(X))).bool()
shufX = torch.randperm(len(X))
X1=X[shufX]
C = torch.where(mask1, X, X1)
1条答案
按热度按时间8fsztsew1#
创建一个只交换有限数量项目的随机函数。
即使权重为1.0,一些项目(平均)也不会移动。你可以通过函数的参数来获得你需要的行为。