np.stack() 与 tf.stack() 的简单理解

时间:2021-01-24 10:36:54

说明:np ----> numpy       tf ----> tensorflownp.stack(arraysaxis=0)

np.stack(arrays, axis=0) ---- 同样也适用于tf.stack()

numpy 和 tensorflow 都有 stack() 函数,该函数主要是用来提升维度。

在只提供数组(张量)和axis参数的前提下,  两者的使用方法和结果一样,原理一样,所以这里用numpy做演示。

假设要转变的张量数组arrays的长度为N,其中的每个张量数组的形状为(A, B, C)。

如果轴axis=0,则转变后的张量的形状为(N, A, B, C)。

如果轴axis=1,则转变后的张量的形状为(A, N, B, C)。

如果轴axis=2,则转变后的张量的形状为(A, B, N, C)。其它情况依次类推。

例如:

np.stack() 与 tf.stack() 的简单理解

np.stack(arrays, axis=0)则表示arrays[0], arrays[1], arrays[2]进行堆叠,所以结果与原始数组一样。

np.stack(arrays, axis=1)则表示arrays[0][0], arrays[1][0]和arrays[2][0]进行堆叠,然后是arrays[0][1],arrays[1][1]与arrays[2][1]进行堆叠。

np.stack(arrays, axis=2)则表示arrays[0][0][0],arrays[1][0][0]和arrays[2][0][0]进行堆叠,然后是arrays[0][0][1],arrays[1][0][1]与arrays[2][0][1]进行堆叠,接着为arrays[0][0][2],arrays[1][0][2]与arrays[2][0][2]进行堆叠......

图例说明:

np.stack() 与 tf.stack() 的简单理解

注:转化后的索引看上面蓝色和绿色的线。

到这里就是我全部的理解,如有错误,欢迎指出。