【问题标题】:Slice 4d tensor into 4D tensor of smaller subtensors (slice in last 2 dimensions only)将 4d 张量切片为较小子张量的 4D 张量(仅在最后 2 个维度切片)
【发布时间】:2020-03-26 10:27:04
【问题描述】:

这个问题类似于Slice 2d array into smaller 2d arrays,除了我使用张量(火炬)并且我有一个 4D,而不是 2D,形状的张量,例如。 (3, 1, 32, 32) - 在我的例子中,它是 3 个大小为 32x32 的图像。

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

我也尝试过使用

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

但这并没有按照我的意愿重塑它。

【问题讨论】:

标签: python pytorch


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2022-01-18
    • 2020-02-16
    • 2017-12-01
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 2023-02-15
    相关资源
    最近更新 更多