可以按照以下方式使用滑动窗口构建三维张量:
import numpy as np
# 创建一个 2D 张量 X
X = np.random.rand(10, 3)
# 定义窗口大小 T,并计算输出张量 Y 的形状
T = 3
m = X.shape[0] - T + 1
v = X.shape[1] - T + 1
# 初始化输出张量 Y
Y = np.zeros((m, v, T))
# 滑动窗口,填充输出张量 Y 中的元素
for i in range(m):
for j in range(v):
window = X[i:i+T, j:j+T]
Y[i,j,:] = window
print(X.shape) # 输出 (10, 3)
print(Y.shape) # 输出 (8, 1, 3)
在上面的代码中,我们首先创建了一个随机生成的二维张量X,形状为(10,3),然后定义了窗口大小T=3,并计算出了输出张量Y的形状(m,v,T),即(8,1,3)。
接着使用两个嵌套的for循环,滑动窗口并将每个窗口中的元素填充到输出张量Y中。
最终输出了X和Y的形状,可以看到经过转换后,Y的形状变成了(8,1,3),符合我们预期的三维形式。其中第一个维度表示有多少个滑动窗口,第二个维度表示每个滑动窗口中有多少个向量(即T),第三个维度表示每个向量的长度。