张量tensor高维数组的理解(Tensor 与numpy操作类似,本文以高维数组举例)

a = np.arange(120).reshape(2,3,4,5)

 得到shape为(2,3,4,5)的高维数组a,输出a为:

[[[[  0   1   2   3   4]
   [  5   6   7   8   9]
   [ 10  11  12  13  14]
   [ 15  16  17  18  19]]

  [[ 20  21  22  23  24]
   [ 25  26  27  28  29]
   [ 30  31  32  33  34]
   [ 35  36  37  38  39]]

  [[ 40  41  42  43  44]
   [ 45  46  47  48  49]
   [ 50  51  52  53  54]
   [ 55  56  57  58  59]]]


 [[[ 60  61  62  63  64]
   [ 65  66  67  68  69]
   [ 70  71  72  73  74]
   [ 75  76  77  78  79]]

  [[ 80  81  82  83  84]
   [ 85  86  87  88  89]
   [ 90  91  92  93  94]
   [ 95  96  97  98  99]]

  [[100 101 102 103 104]
   [105 106 107 108 109]
   [110 111 112 113 114]
   [115 116 117 118 119]]]]

假如我要输出a[:,2,:,4],从后往前看就是,取出最后一维的第4列(红色框),取出第2维所有列,取出第1维的第2列(黄色框),取出第0维的所有列。

张量tensor高维数组的理解(Tensor 与numpy操作类似,本文以高维数组举例)

最后输出的结果就是红黄框交界的地方的值:

[[ 44,  49,  54,  59],
 [104, 109, 114, 119]]

同时也可以看到,输出结果的shape变成了两维。因此对于一个numpy多维array,[:,:,:,:,...,:],将多少个“:”替换为具体的值,最后的结果就降低几维。

总结技巧:shape为[2,3,4,5];  从维度考虑,可以从后往前看(5-->4-->3-->2),一层中括号内有5个元素;双层中括号内包含四个一维数组;三层中括号包含3个二维数组;四层中括号包括两个3维数组。

从元素考虑,从内部往外拔;最里面5个元素组成一维数组;然后往外,四个一维数组组成一个二维数组;再往外,三个二维数组组成一个三维数组;最后,两个三维数组组成一个四维数组。

上一篇:flutter


下一篇:深度学习笔记(基于pytorch)——Numpy基础