gpt4 book ai didi

lua - Torch:如何按行对张量进行洗牌?

转载 作者:行者123 更新时间:2023-12-03 15:22:49 33 4
gpt4 key购买 nike

我目前正在使用 Torch 对一些输入数据实现随机洗牌(在本例中为第一维)。我是火炬的新手,所以我在弄清楚排列如何工作时遇到了一些麻烦..

以下应该对数据进行洗牌:

if argshuffle then 
local perm = torch.randperm(sids:size(1)):long()
print("\n\n\nSize of X and y before")
print(X:view(-1, 1000, 128):size())
print(y:size())
print(sids:size())
print("\nPerm size is: ")
print(perm:size())
X = X:view(-1, 1000, 128)[{{perm},{},{}}]
y = y[{{perm},{}}]
print(sids[{{1}, {}}])
sids = sids[{{perm},{}}]
print(sids[{{1}, {}}])
print(X:size())
print(y:size())
print(sids:size())
os.exit(69)
end

这打印出来
Size of X and y before 
99
1000
128
[torch.LongStorage of size 3]

99
1
[torch.LongStorage of size 2]

99
1
[torch.LongStorage of size 2]

Perm size is:
99
[torch.LongStorage of size 1]
5
[torch.LongStorage of size 1x1]
5
[torch.LongStorage of size 1x1]


99
1000
128
[torch.LongStorage of size 3]

99
1
[torch.LongStorage of size 2]

99
1
[torch.LongStorage of size 2]

在值(value)之外,我可以暗示该函数没有对数据进行混洗。我怎样才能让它正确洗牌,lua/torch 中的常见解决方案是什么?

最佳答案

我也遇到了类似的问题。在文档中,张量没有 shuffle 函数(有用于 dataset loaders )。我使用 torch.randperm 找到了解决该问题的方法.

>>> a=torch.rand(3,5)
>>> print(a)
tensor([[0.4896, 0.3708, 0.2183, 0.8157, 0.7861],
[0.0845, 0.7596, 0.5231, 0.4861, 0.9237],
[0.4496, 0.5980, 0.7473, 0.2005, 0.8990]])
>>> # Row shuffling
...
>>> a=a[torch.randperm(a.size()[0])]
>>> print(a)
tensor([[0.4496, 0.5980, 0.7473, 0.2005, 0.8990],
[0.0845, 0.7596, 0.5231, 0.4861, 0.9237],
[0.4896, 0.3708, 0.2183, 0.8157, 0.7861]])
>>> # column shuffling
...
>>> a=a[:,torch.randperm(a.size()[1])]
>>> print(a)
tensor([[0.2005, 0.7473, 0.5980, 0.8990, 0.4496],
[0.4861, 0.5231, 0.7596, 0.9237, 0.0845],
[0.8157, 0.2183, 0.3708, 0.7861, 0.4896]])

我希望它回答了这个问题!

关于lua - Torch:如何按行对张量进行洗牌?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44738273/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com