将4d张量切片为较小次张量的4D张量(仅在最后2个维度中切片)

时间:2020-03-26 10:27:04

标签: python pytorch

这个问题类似于Slice 2d array into smaller 2d arrays,除了我使用张量(torch)且我具有4D(而非2D)形状的张量的事实。 (3,1,32,32)-在我的情况下,它是3张大小为32x32的图像。

我想将[i,0,:,:]形式的每个张量拆分成较小的子数组,因此输出将具有一个形状。 (3、16、8、8),其中每个[:,j,:,:]是从原始图像切出的小方块。我找不到修改建议的4D张量解的方法。

我也尝试过使用

subx = x.reshape(3, 16, 8, 8)

但是这并不能像我想要的那样重塑它。

1 个答案:

答案 0 :(得分:1)

reshape不适用于此目的。您可以查看skimage的{​​{3}},其中生成的块是输入数组的非重叠视图

from skimage.util.shape import view_as_blocks
view_as_blocks(a, block_shape=(3,1,8,8)).reshape(3, 16, 8, 8)