python - 将 4d 张量切片为较小子张量的 4D 张量(仅在最后 2 个维度进行切片)

标签 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)

但这并没有按照我想要的方式 reshape 它。

最佳答案

reshape 不适用于此目的。您可以查看 skimageview_as_blocks ,其中生成的 block 是输入数组的非重叠 View :

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

关于python - 将 4d 张量切片为较小子张量的 4D 张量(仅在最后 2 个维度进行切片),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60865167/

相关文章:

python - 如何理解在 PyTorch 中创建叶张量?

python - 为什么 GAN 生成的图像随着网络训练的增多而变得更暗?

python - 在 PyTorch 中将张量中的一个数字范围插值到另一个数字范围

python - 如何统计数据框中每个值出现的频率?

python - mypypath : Cannot find module named 'tzwhere'

pytorch - 为什么在此示例中需要对变量调用 detach ?

numpy - 如何在 PyTorch 中选择二维索引?

python - 如何使用生物服务在不指定生物体的情况下访问 KEGG 条目?

python - numpy:在二维数组中找到对称值

python - Twitter API 的替代品