前言

只有光头才能变强。

回顾前面:

不知道大家最开始接触到axis的时候是怎么样的,反正我是挺难理解的..我们可以发现TensorFlow的很多API都有axis这个参数,如果我们对axis不了解,压根不知道API是怎么搞的。

一句话总结axis:axis可以方便我们将数据进行不同维度的处理。

一、理解axis

如果你像我一样,发现API中有axis这个参数,但不知道是什么意思。可能就会搜搜axis到底代表的什么意思。于是可能会类似搜到下面的信息:

使用0值表示沿着每一列或行标签\索引值向下执行方法(axis=0代表往跨行)

使用1值表示沿着每一行或者列标签模向执行对应的方法(axis=1代表跨列)

但我们又知道,我们的数组不单单只有二维的,还有三维、四维等等。一旦维数超过二维,就无法用简单的行和列来表示了。

所以,可以用我下面的方式进行理解:

axis=0将最开外头的括号去除,看成一个整体,在这个整体上进行运算

axis=1将第二个括号去除,看成一个整体,在这个整体上进行运算

...依次类推

话不多说,下面以例子说明~

1.1二维数组之concat

首先,我们来看个concat的例子,concat第一个参数接收val,第二个参数接收的是axis

def learn_concat():

# 二维数组

t1 = tf.constant([[1, 2, 3], [4, 5, 6]])

t2 = tf.constant([[7, 8, 9], [10, 11, 12]])

with tf.Session() as sess:

# 二维数组针对 axis 为0 和 1 的情况

print(sess.run(tf.concat([t1, t2], 0)))

print(sess.run(tf.concat([t1, t2], 1)))

ok,下面以图示的方式来说明。现在我们有两个数组,分别是t1和t2:

首先,我们先看axis=0的情况,也就是tf.concat([t1, t2], 0)。从上面的描述,我们知道,先把第一个括号去除,然后将其子内容看成一个整体,在这个整体下进行想对应的运算(这里我们就是concat)。

所以最终的结果是:

[

[1 2 3],

[4 5 6],

[7 8 9],

[10 11 12]

]

接着,我们再看axis=1的情况,也就是tf.concat([t1, t2], 1)。从上面的描述,我们知道,先把第二个括号去除,然后将其子内容看成一个整体,在这个整体下进行想对应的运算(这里我们就是concat)。

所以最终的结果是:

[

[1, 2, 3, 7, 8, 9]

[4, 5, 6, 10, 11, 12]

]

1.2三维数组之concat

接下来我们看一下三维的情况

def learn_concat():

# 三维数组

t3 = tf.constant([[[1, 2], [2, 3]], [[4, 4], [5, 3]]])

t4 = tf.constant([[[7, 4], [8, 4]], [[2, 10], [15, 11]]])

with tf.Session() as sess:

# 三维数组针对 axis 为0 和 1 和 -1 的情况

print(sess.run(tf.concat([t3, t4], 0)))

print(sess.run(tf.concat([t3, t4], 1)))

print(sess.run(tf.concat([t3, t4], -1)))

ok,下面也以图示的方式来说明。现在我们有两个数组,分别是t3和t4:

首先,我们先看axis=0的情况,也就是tf.concat([t3, t4], 0)。从上面的描述,我们知道,先把第一个括号去除,然后将其子内容看成一个整体,在这个整体下进行想对应的运算(这里我们就是concat)。

所以最终的结果是:

[

[

[1 2]

[2 3]

]

[

[4 4]

[5 3]

]

[

[7 4]

[8 4]

]

[

[2 10]

[15 11]

]

]

接着,我们再看axis=1的情况,也就是tf.concat([t3, t4], 1)。从上面的描述,我们知道,先把第二个括号去除,然后将其子内容看成一个整体,在这个整体下进行想对应的运算(这里我们就是concat)。

所以最终的结果是:

[

[

[1 2]

[2 3]

[7 4]

[8 4]

]

[

[4 4]

[5 3]

[2 10]

[15 11]

]

]

最后,我们来看一下axis=-1这种情况,在文档也有相关的介绍:

As in Python, the axis could also be negative numbers. Negative axis are interpreted as counting from the end of the rank, i.e., axis + rank(values)-th dimension

所以,对于我们三维的数组而言,那axis=-1实际上就是axis=2,下面我们再来看一下这种情况:

最终的结果是:

[

[

[1 2 7 4]

[2 3 8 4]

]

[

[4 4 2 10]

[5 3 15 11]

]

]

除了concat以外,其实很多函数都用到了axis这个参数,再举个例子:

>>> item = np.array([[1,4,8],[2,3,5],[2,5,1],[1,10,7]])

>>> item

array([[1, 4, 8],

[2, 3, 5],

[2, 5, 1],

[1, 10, 7]])

>>> item.sum(axis = 1)

array([13, 10, 8, 18])

>>> item.sum(axis = 0)

array([ 6, 22, 21])

参考资料:

最后

下一篇是TensorBoard~

乐于输出干货的Java技术公众号:Java3y。公众号内有200多篇原创技术文章、海量视频资源、精美脑图,不妨来关注一下!

觉得我的文章写得不错,不妨点一下赞!

java中axis是什么意思_如何理解Axis?相关推荐

  1. 简述java中的注释以及用法_怎样理解 Java 注解和运用注解编程?

    正好最近在公众号(BetterAndroid)发了一篇关于注解的文章,贴在这里吧,希望对题主有帮助. 一.什么是注解 我们都知道在Java代码中使用注释是为了提升代码的可读性,也就是说,注释是给人看的 ...

  2. java中线程调度遵循的原则_深入理解Java多线程核心知识:跳槽面试必备

    多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲.在平时工作中如若使用不当会出现数据错乱.执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线程至关 ...

  3. java中的标识符和关键字_浅谈java中的标识符、修饰符和关键字

    合法标识符 Java语言中,对于变量,常量,函数,语句块均有名字,我们统统称之为Java标识符.标识符是用来给类.对象.方法.变量.接口和自定义数据类型命名的. 组成:Java标识符由数字,字母和下划 ...

  4. java中常量final的用法_详解Java中final的用法

    本文主要介绍了Java中final的使用方法,final是java的关键字,本文就详细说明一下它的使用方法,需要的朋友可以参考下 概念 final 具有"不可改变的"的含义,可以修 ...

  5. java中bjt和utc转化_如何在Java中转换UTC和本地时区

    我对Java中的时区感到好奇.我想从设备获取UTC时间(以毫秒为单位)并发送到服务器.当服务器向用户显示时间时,服务器会将其转换为本地时区.我系统中的时区是澳大利亚/悉尼(UTC + 11:00),测 ...

  6. java中如何调用自身结构_如何在Java中的自定义异常中设置我自己的消息,可以检索我的getMessage()但是没有使用构造函数,有什么办法吗?...

    我刚学习 Java中的异常处理.我想知道的不是尝试说: throw new Exception("My Message"); 和 String message=ex.getMess ...

  7. java中随机数怎么定义类_浅析Java中的随机数类

    Java中的随机数是否可以重复?Java中产生的随机数能否可以用来产生数据库主键?带着这个问题,我们做了一系列测试. 1.测试一: 使用不带参数的Random()构造函数 * @author Carl ...

  8. java compareto方法怎么排序的_深入理解Java中Comparable和Comparator排序

    本文有牛旦教育原创,头条首发,转载注明来源. 如何为需要的排序算法选择正确的接口?通过本文的分析讲解,我们会找到答案参考答案. 程序员经常需要将数据库中的元素排序为集合.数组或映射.在Java中,我们 ...

  9. java中接口什么时候用_我什么时候应该在java中使用接口?

    在Java中精确使用接口的一个很好的例子将是理想的,适用于任何特定的规则. 看看丹以前所有的问题,他似乎只是逐字逐句地张贴家庭作业/考试问题. 令人惊讶的是,这些不是考试题或其他-今天才找到这个网站, ...

  10. java中什么表示菜单项_下列类型中,表示菜单项的是( )。_学小易找答案

    [单选题]下列项目属于直接费用的是( ). [单选题]已知立体的三视图,选择正确的立体图 [填空题]气候统计预测,一般分为四步.首先,( );其次,( );再次,( );最后,( ). A 建立统计模 ...

最新文章

  1. 扩增子统计绘图5火山图:差异OTU数量及变化规律
  2. Sean Lynch谈Facebook Claspin监控工具的由来
  3. day4 流程控制while 判断if
  4. 《剑指offer》c++版本 18.删除链表的结点
  5. c执行cmd pdf2swf_PDF2SWF简单使用
  6. Train Problem I(模拟栈)
  7. linux脚本登录启动失败,linux-从bash脚本启动进程失败
  8. 没有工作怎么申请贷款?
  9. 《过早退出是一切失败的根源》读后感
  10. 通过对象属性去重_Redis常见对象类型的底层数据结构
  11. air什么意思中文_Air 的中文意思是什么?
  12. python输出运行时间表_Python编程第十二课 了解程序运行的时间
  13. linux串口编程实例_Linux 网络编程——原始套接字实例:发送 UDP 数据包
  14. 计算机怎么远程桌面,电脑远程桌面如何连接 电脑远程桌面连接方法【详解】...
  15. python 在软件自己自动输入-Python模拟百度自动输入搜索功能的实例
  16. 一个快速排序写了快 10000 字?
  17. java 实现在线预览功能
  18. 程序员的 升级 ,价值观的改变
  19. 360和腾讯QQ的那场战争!
  20. OpenHarmony 2.0和HarmonyOS发布会快评

热门文章

  1. HTML5 第003篇 area标签
  2. 计算机对环境保护的应用,计算机技术在环境保护中的应用
  3. amoeba mysql_详解如何利用amoeba(变形虫)实现mysql数据库读写分离
  4. 一个人摘了一些桃子,第一天卖掉了一半,又吃了一个,第二天卖掉了一半,又吃了一个,以后天天都是如此处理,到第n天发现桃子只剩下一个桃子,n是参数,返回值是一共摘的桃子数。 求两个数的最大公约数
  5. 安防领域名词explain
  6. 计算机 小学数学应用题教学设计,小学数学教案相遇问题应用题
  7. Win10代理自动打开无法永久关闭的问题排查和如何解决
  8. 未被授权查看该页 HTTP 错误 401.3 - 未经授权
  9. 如何降低数字信号和模拟信号间的相互干扰
  10. Windows 开启护眼模式 | Windows护眼软件