随机打乱函数 torch.randperm的使用(类似tensorflow中的tf.random_shuffle)

文章讲述了如何利用PyTorch中的torch.randperm函数生成随机排列的索引,结合view方法来打乱一维和多维张量的元素顺序,从而实现张量的随机洗牌操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例:一维 

x = torch.tensor([2,5,16,10,0,5618,81,8,18])
indices = torch.randperm(x.numel())
shuffled_x = x[indices]
print(shuffled_x)
# tensor([   2,   18, 5618,   81,    5,   10,    8,    0,   16])

 

indices = torch.randperm(x.numel())
shuffled_x = x.view(-1)[indices].view(x.size())

在这里,torch.randperm(x.numel()) 函数生成从 0 到 x.numel()-1 的整数序列随机排列,这个序列的长度等于 x 的元素个数。随机排列后的序列可以用来索引 x.view(-1) (将 x 张量展平为一个一维张量),以此来打乱 x 中的元素顺序。最后,通过 view(x.size()) 将张量恢复到原来的形状。

如果要打乱一个多维张量的元素顺序,需要在 view 函数中使用多个参数,如下所示:

indices = torch.randperm(x.numel())
shuffled_x = x.view(x.size()[0], -1)[indices].view(x.size())
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值