我希望能够将一个专为3D张量设计的函数应用于4D张量中的每个3D张量,即image.translate()
。例如,我可以将这个函数单独应用到两个维度图像(3,50,50),但如果我可以提供他们的(2,3,50,50)的4D连接,那将会很棒。
这可能是在for循环中完成但我想知道是否有任何内置函数。感谢。
答案 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]