如何理解深度学习中的tensor(涉及numpy的二维,三维以及四维数据的理解) 您所在的位置:网站首页 三维含义 如何理解深度学习中的tensor(涉及numpy的二维,三维以及四维数据的理解)

如何理解深度学习中的tensor(涉及numpy的二维,三维以及四维数据的理解)

2024-06-28 08:30| 来源: 网络整理| 查看: 265

0. 写作目的

好记性不如烂笔头。

结论:无论几维,都可以按照(Batch_size, Height, Width, Channle)来理解。

1. 二维数据的理解

 理解为:只有(Height, Width),而且理解的是对于每一【 】从后向前看。即第一个[0.1, 0.2, 0.3]是width维度的。

b = [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]] b_array = np.array( b ) print(b_array) print(b_array.shape) print( b_array[1,2] ) ### result [[0.1 0.2 0.3] [0.4 0.5 0.6]] (2, 3) 0.6

 

2. 对三维数据的理解

 理解为:只有(Height, Width, Channel),而且理解的是对于每一【 】从后向前看。即第一个[1, 2, 3, 3.5]是Channel维度的。

a = [ [[1, 2, 3, 3.5], [4, 5, 6, 6.5]], [[7, 8, 9, 9.5], [10, 11, 12, 12.5]], [[13, 14, 15, 15.5], [16, 17, 18, 18.5]]] a_array = np.array( a ) print(a_array) print( a_array.shape ) print( a_array[0, 1, 3] ) ### result [[[ 1. 2. 3. 3.5] [ 4. 5. 6. 6.5]] [[ 7. 8. 9. 9.5] [10. 11. 12. 12.5]] [[13. 14. 15. 15.5] [16. 17. 18. 18.5]]] (3, 2, 4) 6.5

可视化上述的三维数据(字迹丑大家见谅,理解原理优先):

 

3. 对四维数据的理解

 理解为:(Batch_size, Height, Width, Channel),而且理解的是对于每一【 】从后向前看。即第一个[0.1, 0.2, 0.3]是Channel维度的。

c = [ [[[0.1, 0.2, 0.3], [0.4, 0.5, 0.6], [0.7, 0.8, 0.9], [1.0, 1.1, 1.2]], [[0.11, 0.21, 0.31], [0.41, 0.51, 0.61], [0.71, 0.81, 0.91], [1.01, 1.11, 1.21]] ], [[[0.12, 0.22, 0.32], [0.42, 0.52, 0.62], [0.72, 0.82, 0.92], [1.02, 1.12, 1.22]], [[0.112, 0.212, 0.312], [0.412, 0.512, 0.612], [0.712, 0.812, 0.912], [1.012, 1.112, 1.212]]] ] c_array = np.array( c ) print( c_array ) print( c_array.shape ) print( c_array[1, 0, 3, 1] ) ## result [[[[0.1 0.2 0.3 ] [0.4 0.5 0.6 ] [0.7 0.8 0.9 ] [1. 1.1 1.2 ]] [[0.11 0.21 0.31 ] [0.41 0.51 0.61 ] [0.71 0.81 0.91 ] [1.01 1.11 1.21 ]]] [[[0.12 0.22 0.32 ] [0.42 0.52 0.62 ] [0.72 0.82 0.92 ] [1.02 1.12 1.22 ]] [[0.112 0.212 0.312] [0.412 0.512 0.612] [0.712 0.812 0.912] [1.012 1.112 1.212]]]] (2, 2, 4, 3) 1.12

   可视化上述的四维数据(字迹丑大家见谅,理解原理优先):

4. tensor的简单操作 4.1 numpy 中对tensor的操作

以三维tensor为例:

numpy.sum( tensor, axis ) numpy.mean( tensor, axis)

其中axis = -1是对最里面的一个维度操作。如numpy.sum( tensor, axis = -1 ), 即对第2维度进行操作,即对channel进行相加。

实例为:

import numpy as np a = [[[1, 2, 3,], [4, 5, 6]], [[1.1, 2.1, 3.1], [4.1, 5.1, 6.1]]] print( np.sum(a, axis=-1) ) print( np.sum(a, axis=0) ) print( np.sum(a, axis=1) ) print( np.sum(a, axis=2) ) ## output #axis = -1 ## channel [[ 6. 15. ] [ 6.3 15.3]] # axis = 0 ## height [[ 2.1 4.1 6.1] [ 8.1 10.1 12.1]] # axis = 1 ## width [[5. 7. 9. ] [5.2 7.2 9.2]] # axis = 2 ## channel [[ 6. 15. ] [ 6.3 15.3]]

There may be some mistakes in this blog. So, any suggestions and comments are welcome!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有