numpy的反函数as_strided

Inverse function of numpy as_strided

我有一个 4 张量 x。 6张量y计算如下:

x = np.random.randn(64, 28, 28, 1)
strided_shape = 64, 26, 26, 3, 3, 1
y = numpy.lib.stride_tricks.as_strided(x, strided_shape, strides=(x.strides[0], x.strides[1], x.strides[2], x.strides[1], x.strides[2], x.strides[3]))

strided_shape 通常可以是任何形状,只要第一个和最后一个维度与 x 匹配即可(这只是一个具体示例)。

我的问题是,使用 y(以及 x.shapex.strides 元组)是否可以使用 [=20] 恢复原始张量 x =],reshapesum,等等?注意:我实际上并不打算将上述过程应用于 y 本身;相反,我想在与 y.

形状相同的张量上执行该过程

好吧 y 只是 x 的一个视图,具有不同的形状和步幅。因此,从 y 恢复 x 只是简单地改变形状和步幅。因此,鉴于这些(假设这些在 xy 转换之前保存),它只是 -

x = np.lib.stride_tricks.as_strided(y, x.shape, x.strides)