火炬 - 在尺寸上应用功能

时间:2015-12-06 21:55:43

标签: lua torch

我希望能够将一个专为3D张量设计的函数应用于4D张量中的每个3D张量,即image.translate()。例如,我可以将这个函数单独应用到两个维度图像(3,50,50),但如果我可以提供他们的(2,3,50,50)的4D连接,那将会很棒。

这可能是在for循环中完成但我想知道是否有任何内置函数。感谢。

1 个答案:

答案 0 :(得分:2)

我还没有在Torch找到这样的功能。当然,你可以自己定义一个,让你的生活更幸福一点:

function apply_to_slices(tensor, dimension, func, ...)
    for i, slice in ipairs(tensor:split(1, dimension)) do
        func(slice, i, ...)
    end
    return tensor
end

示例:

function power_fill(tensor, i, power)
    power = power or 1
    tensor:fill(i ^ power)
end

A = torch.Tensor(5, 6)

apply_to_slices(A, 1, power_fill)

 1  1  1  1  1  1
 2  2  2  2  2  2
 3  3  3  3  3  3
 4  4  4  4  4  4
 5  5  5  5  5  5
[torch.DoubleTensor of size 5x6]

apply_to_slices(A, 2, power_fill, 3)

   1    8   27   64  125  216
   1    8   27   64  125  216
   1    8   27   64  125  216
   1    8   27   64  125  216
   1    8   27   64  125  216
[torch.DoubleTensor of size 5x6]