I created a 4D tensor of the following size. (B, C, H, W)
And I want to reshape this tensor to the following size. (B, C, 2H, 2W)
Each value expands into 4 values, but only the elements in the original tensor that have an index corresponding to a value in the index tensor remain identical to the original tensor’s value.
The index follows the following rule.
0 1
2 3
And here is an example below:
original tensor:
torch.Size([1, 1, 2, 2])
tensor([[[[1.0000, 0.4000],
[0.2000, 0.5000]]]])
index tensor:
torch.Size([1, 1, 2, 2])
tensor([[[[0, 2],
[1, 1]]]])
output tensor:
torch.Size([1, 1, 4, 4])
tensor([[[[1.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.4000, 0.0000],
[0.0000, 0.2000, 0.0000, 0.5000],
[0.0000, 0.0000, 0.0000, 0.0000]]]])
How can I efficiently transform this tensor while making good utility of GPU? (maybe we can use torch.tensor.scatter_)