TensorFlow中有很多函数涉及到axis,比如tf.reduce_mean(),其函数原型如下:

def reduce_mean(input_tensor,axis=None,keepdims=None,name=None,reduction_indices=None,keep_dims=None):

其中axis表示的是,对该维度进行求均值(默认情况下,是对所有值求均值)。
除了TensorFlow中,numpy中也经常遇到很多对矩阵操作的函数会涉及axis操作。比如np.mean(),其函数原型如下:

def mean(a, axis=None, dtype=None, out=None, keepdims=np._NoValue):

想要弄清楚如何处理涉及axis(维度)的操作,必须先明白axis是什么。
首先axis是维度,如果axis=0则对应着高; 如果axis=1则对应着行处理;如果axis=2则对应着列;如果axis=3…n(无法用直观的图来表示)。我相信很多人看到这还是会一头雾水。什么是高,行还有列。为了说明这个问题,我举个列子:

data=[[[1,2,3],[11,22,33]],[[4,5,6],[44,55,66]],[[10,11,12],[100,110,120]],[[7,8,9],[77,88,99]]]
data_np=np.array(data)
print(data_np)
[[[  1   2   3][ 11  22  33]][[  4   5   6][ 44  55  66]][[ 10  11  12][100 110 120]][[  7   8   9][ 77  88  99]]]如上面,可以将最外层[ ]去掉,可以发现有4组元素(这里的元素是矩阵),你可以将其理解为高。
再从这4组元素中选取一组,比如选择的是
[[  1   2   3][ 11  22  33]]
然后将该组的最外层[ ]去掉,可以发现有2组元素分别为[  1   2   3]和 [ 11  22  33],此时对应的是行。
在从这两组元素中选一组,比如选择的是[ 11  22  33]现在无需去掉最外层的[ ]了,一眼就能看出里面有3个元素。这就是对应的列。理解了上面的分析后,很容易就知道(高,行,列)对应的其实就是改矩阵的shape.
print(data_np.shape):
(4,2,3)

现在弄清楚了axis的值与(高,行,列)的关系后,再来分析tf.reduce_mean()或者np.mean()等函数是如何对axis进行操作的。

data=[[[1,2,3],[11,22,33]],[[4,5,6],[44,55,66]],[[10,11,12],[100,110,120]],[[7,8,9],[77,88,99]]]data_tensor=tf.constant(data,dtype=tf.float32)mean_axis0=tf.reduce_mean(data_tensor,axis=0)
mean_axis1=tf.reduce_mean(data_tensor,axis=1)
mean_axis2=tf.reduce_mean(data_tensor,axis=2)with tf.Session() as sess:print(sess.run(mean_axis0))print(sess.run(mean_axis1))print(sess.run(mean_axis2))

针对上述代码,我们先对axis=0维度的数据处理进行分析。
首先对上述data数据进行立体化变换,如下图(本人本想用软件来绘制3D的矩阵叠加效果,可惜找了很多软件都不适合,也许是本人寻找的还不够,欢迎有知道可以绘制3D的矩阵叠加效果的朋友们,能够分享一下。感激…)

如上如,axis=0的维度数据求均值,

[[(1+4+10+7)/4         (2+5+11+8)/4       (3+6+12+9)/4]
[(11+44+100+77)/4      (22+55+110+88)/4   (33+66+120+99)/4]]
=
[[ 5.5   6.5   7.5 ][58.   68.75 79.5 ]]

同理,对axis=1的维度数据求均值

[[(1+11)/2    (2+22)/2    (3+33)/2][(4+44)/2    (5+55)/2    (6+66)/2][(10+100)/2  (11+110)/2  (12+120)/2][(7+77)/2    (8+88)/2    (9+99)/2]]=[[ 6.  12.  18. ][24.  30.  36. ][55.  60.5 66. ][42.  48.  54. ]]

同理可得axis=2维度的数据平均值为(过程留给读者去推,运算结果如下):

[[  2.  22.][  5.  55.][ 11. 110.][  8.  88.]]

在python的世界里,有很多时候都需要对数据进行维度的操作,如果对axis理解的不透的话,很容易找不着方向。

更多人工智能技术干货请关注:

TensorFlow、Numpy中的axis的理解相关推荐

  1. 1.numpy中三维数组的理解

    numpy中三维数组的理解 三维数组图形--立方体 图片中的三维数组 RNN中序列数据的三维数组 迭代数据中的三维数组 三维数组图形–立方体 我们在做图像处理,RNN序列数据,迭代数据的时候会遇到三维 ...

  2. 彻底理解numpy中的axis

    时下流行人工智能,python成为人工智能最好的处理语言,这与python中的科学计算模块numpy是分不开的.numpy相信大都数人都知道.而在numpy中,有很多的函数都涉及到axis,numpy ...

  3. numpy 中的axis轴问题

    在numpy库中,axis轴的问题比较重要,不同的值会得到不同的结果,为了便于理解,特此将自己的理解进行梳理 为了梳理axis,借助于sum函数进行! a = np.arange(27).reshap ...

  4. Numpy中的axis/axes详解

    首先,在Numpy中,维数(dimensions)通过轴(axes)来扩展,轴的个数被称作rank.这里的rank不是线性代数中的rank(秩),它指代的依旧是维数(number of dimensi ...

  5. python 三维数组,numpy中np.shape的理解

    python 三维数组,numpy中np.shape的应用 直接贴图对于shape函数一般表示输出数组的形状,对于二维数组就是输出行与列,对于三维数组,shape[0]表示三维数组中包含多少个二维数组 ...

  6. numpy 中对axis参数的理解

    import numpy as np arr = np.array([[[1,2],[3,4]],[[5,6],[7,8]]]) print(np.sum(arr,axis=0))    # [[6, ...

  7. numpy中数组维度的理解

    参考 这篇文章主要是为了弄清楚数组按每个维度进行计算时,具体的操作是什么样的. 一.数组中的各个维度表示的是什么? 为了便于理解,用单位体表示,剥去一层中括号后,得到的数据. 1. 以二维数组为例 i ...

  8. 对NumPy中dot()函数的理解(亲测,矩阵算法)

    今天学习到numpy基本的运算方法,遇到了一个让我比较难理解的问题.就是dot函数是如何对矩阵进行运算的. 一.dot()的使用 参考文档:https://docs.scipy.org/doc/num ...

  9. numpy中的axis=0,axis=1

    from: http://blog.csdn.net/rango_lhl/article/details/50542887 axis=0表述列 axis=1表述行 如下面例子: In [52]: ar ...

最新文章

  1. 服务器安全配置之注册表设置
  2. 【百度地图API】小学生找哥哥——小学生没钱打车,所以此为公交查询功能
  3. 【直播回看】「EDGE X Kubernetes · 云原生在边缘的实践与应用」
  4. Android Application 对象介绍
  5. OData元数据在浏览器里以Feed视图显示的解决办法
  6. 为什么定义!doctype html表格高度变高,!DOCTYPE html声明下div高度100%的问题解决方法...
  7. 华尔街宫斗戏升温:银行巨头和纽交所争夺交易数据所有权
  8. echarts grid的样式位置_vue使用Echarts vue使用Echarts滚动条
  9. 从C语言到C++的进阶之C++的非类新特性(篇二)
  10. win10查询计算机ip和用户名和密码,Win10系统查询计算机IP子网掩码和默认网关设置教程...
  11. android seekbar 圆角,android - 最小或最大时,圆角android seekbar的ui奇怪行为 - 堆栈内存溢出...
  12. 高等数学(上)思维导图
  13. 共轭复数,共轭根式,共轭矩阵,共轭方向,共轭方向法,共轭梯度法,共轭分布,共轭函数,傅里叶变换的共轭对称
  14. The server encountered an internal error () that prevented it from fulfilling this requet异常解决
  15. android 里面的颜色的RGB
  16. 使用IO口检测电源电压的转换逻辑
  17. 图像处理6-图像泊松编辑
  18. Spark高效数据分析03、Spark SQL
  19. [数据分析师]数据分析看中国展览业的数字化应用发展
  20. glade-2:安装经验

热门文章

  1. 大量数据快速导出的解决方案-Kettle
  2. Bugzilla使用手册及解决方案
  3. 常纪文:智慧城市有助于实现低碳绿色发展
  4. git 使用笔记 oschina ,mac
  5. MSXML解析[转]
  6. Linux 下ntpdate网络校时使用
  7. ASP.NET学习笔记 1
  8. 自由软件与知识产权保护
  9. 在校园里捉到一只小鸟,怎么办?
  10. python旅游推荐系统_用python写一个简单的推荐系统