简单的Torch7相当于numpy.roll

时间:2015-12-27 13:00:49

标签: python numpy lua torch

有没有简单的方法在torch7中滚动张量,如numpy.roll和numpy.rollaxis在python中?

谢谢!

2 个答案:

答案 0 :(得分:0)

你可以用火炬permute来达到numpy rollaxis的效果。虽然rollaxis要求移动一个轴的起始位置和结束位置,但permute需要所有轴的新位置。例如。对于三维张量np.rollaxis(x, 0, 3)(将第一轴移动到末尾)将等同于x:permute(2, 3, 1)

我不知道numpy的roll是否容易替换,但scatter似乎是一个不错的候选人。在换班后用所需尺寸和元素的新顺序调用它。 (每行需要一个新的元素顺序。) 以下示例将x的每一行(包含2行和4列随机值)2沿最后一轴向右移动:

th> x = torch.zeros(2, 4):uniform(0, 10)
th> y = torch.zeros(2, 4):scatter(2, torch.LongTensor{{3, 4, 1, 2}, {3, 4, 1, 2}}, x)
th> x
 0.7295  3.2218  7.3979  5.5500
 8.4354  3.6722  5.5463  3.4323
[torch.DoubleTensor of size 2x4]
th> y
 7.3979  5.5500  0.7295  3.2218
 5.5463  3.4323  8.4354  3.6722
[torch.DoubleTensor of size 2x4]

答案 1 :(得分:0)

也许你可以尝试lutorpy所以你可以在python中使用numpy数组,然后将它传递给torch模块并将其转换回来。